반응형
Approach
출처: https://www.acmicpc.net/problem/7568
덩치 (몸무게, 키)를 비교하는 문제이다.
두 데이터로 비교하기 어려울 때는 동일한 등수로 처리한다.
동일한 등수가 몇명인지 등을 요구하지 않고
"본인 위에 덩치가 큰 사람이 몇명인지" 구하면 된다.
ex) (55, 185) (58, 183) (88, 186) (60, 175) (46, 155)
→ 4번째 사람은 (60, 175) 인데,
본인 위에 한명만 있기 때문에 2등이다.
입력 값(몸무게와 키)을 먼저 배열에 저장한다.
한명씩 차례대로 전체 사람중에 몇등인지 확인하고 바로 출력한다.
C++
#include <iostream>
using namespace std;
const int MAX_N = 50 + 2;
int N, ans;
struct
{
int k, h;
} arr[MAX_N];
int main()
{
// freopen("input.txt", "r", stdin);
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> arr[i].k >> arr[i].h;
}
for (int i = 0; i < N; i++)
{
ans = 1;
for (int j = 0; j < N; j++)
{
if (arr[i].k < arr[j].k && arr[i].h < arr[j].h)
ans++;
}
cout << ans << endl;
}
}
Java
import java.util.Scanner;
class person
{
int x, y;
int deg;
@Override
public String toString() {
return "person [x=" + x + ", y=" + y + "]";
}
}
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
person[] p = new person[n];
for (int i = 0; i < p.length; i++) {
p[i] = new person();
p[i].x = Integer.parseInt(sc.next());
p[i].y = Integer.parseInt(sc.next());
p[i].deg = 0;
}
// 모든 사람에 대하여 등수를 매긴다.
for (int i = 0; i < p.length; i++) {
int count = 1;
for (int j = 0; j < p.length; j++) {
if (i == j) {
continue;
}
else {
if (p[j].x > p[i].x && p[j].y > p[i].y)
count++;
}
}
p[i].deg = count;
}
// 결과 출력
for (int i = 0; i < p.length; i++) {
System.out.print(p[i].deg + " ");
}
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 5622 다이얼 (0) | 2022.03.02 |
---|---|
[BOJ] 백준 4948 베르트랑 공준 (0) | 2022.02.28 |
[BOJ] 백준 10866 덱 (0) | 2022.02.25 |
[BOJ] 백준 4673 셀프 넘버 (0) | 2022.02.25 |
[BOJ] 백준 11441 합 구하기 (0) | 2022.02.23 |
댓글