반응형
https://www.acmicpc.net/problem/7568
- 문제
- 문제 풀이
백준 7568번 덩치는 실버 5 난이도의 구현 및 브루트 포스 문제이다. 이 문제에서는 N명의 키와 몸무게가 주어진다. 그리고 한 사람의 키와 몸무게가 다른 사람보다 더 크면 그 사람은 덩치가 더 크다고 한다. 이때, N명의 키와 몸무게가 주어질 때 덩치 등수를 출력하면 된다.
이 문제는 정렬을 안 쓰고서도 풀 수 있다. 브루트 포스, 즉 가능한 모든 경우를 봐야 한다. 우선 배열 2개를 만든다. 배열 하나는 h라고 부르고, 이 배열에는 키를 저장할 것이다. 그리고 다른 배열은 w라고 부르고, 이 배열에는 몸무게를 저장할 것이다. 그리고 또 다른 배열 order를 만든다. 이 배열에는 각 사람의 덩치 등수를 저장할 것이다. 처음에는 모든 사람의 덩치 등수를 1로 초기화시켜준다.
이 문제에서는 모든 사람의 키와 몸무게를 서로서로 비교해야 되기 때문에 이중 for-loop을 풀 것이다. inner for-loop과 바깥 for-loop 둘 다 0부터 n까지 돌려준다. 그리고 h [i] < h [j]이고 w [i] < w [j] 이면 i번째 사람의 덩치가 j번째 사람의 덩치보다 더 작다는 것이니까 덩치 등수를 +1 시켜준다.
이렇게 이중 for-loop을 돌리고 보면 모든 경우를 확인한 것이므로 order 배열을 출력만 해주면 된다.
자세한 코드는 밑에 있는 코드를 참고하면 되겠다.
- 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] h = new int[n]; //키 배열
int[] w = new int[n]; //몸무게 배열
int[] order = new int[n]; //등수 배열
for (int i = 0; i < n; i++) {
int num = n;
StringTokenizer st = new StringTokenizer(br.readLine());
w[i] = Integer.parseInt(st.nextToken());
h[i] = Integer.parseInt(st.nextToken());
order[i] = 1;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
//키와 몸무게 둘다 더 작으면 등수가 1씩 밀린다
if (w[i] < w[j] && h[i] < h[j]) order[i]++;
}
}
//등수 출력
for (int i = 0; i < n; i++) {
System.out.print(order[i] + " ");
}
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 1427번 : 소트인사이드 – JAVA [자바] (0) | 2022.07.25 |
---|---|
[백준] 10989번 : 수 정렬하기 3 – JAVA [자바] (0) | 2022.07.24 |
[백준] 2581번 : 소수 – JAVA [자바] (0) | 2022.07.16 |
[백준] 2960번 : 에라토스테네스의 체 – JAVA [자바] (0) | 2022.07.16 |
[백준] 2775번 : 부녀회장이 될테야 – JAVA [자바] (0) | 2022.07.15 |
댓글