본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 7568 덩치

by 까망 하르방 2022. 3. 3.
반응형

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

댓글