-
7568 : 덩치Solve Algorithms/DP, BruteForce 2020. 5. 5. 14:53728x90
출처 : https://www.acmicpc.net/problem/7568
알고리즘 분류 : 브루트 포스
문제
우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x,y), (p,q)라고 할 때 x>p 그리고 y>q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다.
N명의 집단에서 각 사람의 덩치 등수는 자신보다 더 "큰 덩치"의 사람의 수로 정해진다. 만일 자신보다 더 큰 덩치의 사람이 k명이라면 그 사람의 덩치 등수는 k+1이 된다. 이렇게 등수를 결정하면 같은 덩치 등수를 가진 사람은 여러 명도 가능하다. 아래는 5명으로 이루어진 집단에서 각 사람의 덩치와 그 등수가 표시된 표이다.
위 표에서 C보다 더 큰 덩치의 사람이 없으므로 C는 1등이 된다. 그리고 A, B, D 각각의 덩치보다 큰 사람은 C뿐이므로 이들은 모두 2등이 된다. 그리고 E보다 큰 덩치는 A, B, C, D 이렇게 4명이므로 E의 덩치는 5등이 된다. 위 경우에 3등과 4등은 존재하지 않는다. 여러분은 학생 N명의 몸무게와 키가 담긴 입력을 읽어서 각 사람의 덩치 등수를 계산하여 출력해야 한다.
입력
첫 줄에는 전체 사람의 수 N이 주어진다. 그리고 이어지는 N개의 줄에는 각 사람의 몸무게와 키를 나타내는 양의 정수 x와 y가 하나의 공백을 두고 각각 나타난다. 단, 2 ≤ N ≤ 50, 10 ≤ x,y ≤ 200 이다.
출력
여러분은 입력에 나열된 사람의 덩치 등수를 구해서 그 순서대로 첫 줄에 출력해야 한다. 단, 각 덩치 등수는 공백문자로 분리되어야 한다.
접근
- 위의 문제에서, bold 처리한 부분을 if문으로 만들어주면 된다.
- list[i][2]에는 i번 째 사람의 등수를 저장한다.
코드
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[][] list = new int[n + 1][3];for (int i = 1; i <= n; i++) {list[i][0] = sc.nextInt();list[i][1] = sc.nextInt();list[i][2] = 1;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (list[i][0] < list[j][0] && list[i][1] < list[j][1])list[i][2]++;}}for (int i = 1; i <= n; i++)System.out.print(list[i][2] + " ");}}728x90'Solve Algorithms > DP, BruteForce' 카테고리의 다른 글
프로그래머스 : 124나라의 숫자 (0) 2020.06.26 프로그래머스 : 모의고사 (0) 2020.05.17 2096 : 내려가기 (0) 2020.05.05 1915 : 가장 큰 정사각형 (0) 2020.05.05 1965 : 상자넣기 (0) 2020.05.05