Skip to content

Commit f930076

Browse files
committed
[Silver V] Title: 덩치, Time: 104 ms, Memory: 14200 KB -BaekjoonHub
1 parent cf5448f commit f930076

File tree

2 files changed

+113
-0
lines changed

2 files changed

+113
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# [Silver V] 덩치 - 7568
2+
3+
[문제 링크](https://www.acmicpc.net/problem/7568)
4+
5+
### 성능 요약
6+
7+
메모리: 14200 KB, 시간: 104 ms
8+
9+
### 분류
10+
11+
브루트포스 알고리즘, 구현
12+
13+
### 제출 일자
14+
15+
2025년 1월 8일 17:02:30
16+
17+
### 문제 설명
18+
19+
<p>우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼 때 C와 D는 누구도 상대방보다 더 크다고 말할 수 없다.</p>
20+
21+
<p>N명의 집단에서 각 사람의 덩치 등수는 자신보다 더 "큰 덩치"의 사람의 수로 정해진다. 만일 자신보다 더 큰 덩치의 사람이 k명이라면 그 사람의 덩치 등수는 k+1이 된다. 이렇게 등수를 결정하면 같은 덩치 등수를 가진 사람은 여러 명도 가능하다. 아래는 5명으로 이루어진 집단에서 각 사람의 덩치와 그 등수가 표시된 표이다.</p>
22+
23+
<table class="table table-bordered" style="width: 35%;">
24+
<thead>
25+
<tr>
26+
<th style="text-align: center;">이름</th>
27+
<th style="text-align: center;">(몸무게, 키)</th>
28+
<th style="text-align: center;">덩치 등수</th>
29+
</tr>
30+
</thead>
31+
<tbody>
32+
<tr>
33+
<td style="text-align: center;">A</td>
34+
<td style="text-align: center;">(55, 185)</td>
35+
<td style="text-align: center;">2</td>
36+
</tr>
37+
<tr>
38+
<td style="text-align: center;">B</td>
39+
<td style="text-align: center;">(58, 183)</td>
40+
<td style="text-align: center;">2</td>
41+
</tr>
42+
<tr>
43+
<td style="text-align: center;">C</td>
44+
<td style="text-align: center;">(88, 186)</td>
45+
<td style="text-align: center;">1</td>
46+
</tr>
47+
<tr>
48+
<td style="text-align: center;">D</td>
49+
<td style="text-align: center;">(60, 175)</td>
50+
<td style="text-align: center;">2</td>
51+
</tr>
52+
<tr>
53+
<td style="text-align: center;">E</td>
54+
<td style="text-align: center;">(46, 155)</td>
55+
<td style="text-align: center;">5</td>
56+
</tr>
57+
</tbody>
58+
</table>
59+
60+
<p>위 표에서 C보다 더 큰 덩치의 사람이 없으므로 C는 1등이 된다. 그리고 A, B, D 각각의 덩치보다 큰 사람은 C뿐이므로 이들은 모두 2등이 된다. 그리고 E보다 큰 덩치는 A, B, C, D 이렇게 4명이므로 E의 덩치는 5등이 된다. 위 경우에 3등과 4등은 존재하지 않는다. 여러분은 학생 N명의 몸무게와 키가 담긴 입력을 읽어서 각 사람의 덩치 등수를 계산하여 출력해야 한다.</p>
61+
62+
### 입력
63+
64+
<p>첫 줄에는 전체 사람의 수 N이 주어진다. 그리고 이어지는 N개의 줄에는 각 사람의 몸무게와 키를 나타내는 양의 정수 x와 y가 하나의 공백을 두고 각각 나타난다.</p>
65+
66+
### 출력
67+
68+
<p>여러분은 입력에 나열된 사람의 덩치 등수를 구해서 그 순서대로 첫 줄에 출력해야 한다. 단, 각 덩치 등수는 공백문자로 분리되어야 한다.</p>
69+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStreamReader;
4+
import java.util.Arrays;
5+
6+
public class Main {
7+
public static void main(String[] args) throws IOException {
8+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
int member = Integer.parseInt(br.readLine());
10+
int[][] members = new int[member][3];
11+
int[] rank = new int[member];
12+
Arrays.fill(rank, 1);
13+
14+
for(int i = 0; i < member; i++) {
15+
String[] input = br.readLine().split(" ");
16+
members[i][0] = Integer.parseInt(input[0]); // 몸무게
17+
members[i][1] = Integer.parseInt(input[1]); // 키
18+
}
19+
20+
for(int i = 0; i < member; i++) {
21+
int[] a = members[i];
22+
int ax = a[0];
23+
int ay = a[1];
24+
for(int j = 0; j < member; j++) {
25+
if(i==j) continue;
26+
int[] b = members[j];
27+
int bx = b[0];
28+
int by = b[1];
29+
30+
// i가 j보다 덩치가 작다면 i의 순위를 증가
31+
if(ax < bx && ay < by) {
32+
rank[i]++;
33+
continue;
34+
}
35+
}
36+
}
37+
for(int i = 0; i < rank.length; i++) {
38+
System.out.print(rank[i]);
39+
if(i != rank.length-1) {
40+
System.out.print(" ");
41+
}
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)