728x90
반응형
<문제 링크>
https://www.acmicpc.net/problem/7568
<풀이>
키와 몸무게를 비교해 순위를 정하는 문제이다.
순위를 정하는 기준은 덩치가 크고 작냐인데 A와 B가 가진 키와 몸무게를 비교해 두 개의 수치가 전부 커야 덩치가 크다고 할 수 있다.
그래서 키와 몸무게가 크면 순위가 높은 것이기 때문에 rank는 변하지 않으며, 키와 몸무게가 모두 작아야 순위가 낮아지기 때문에 rank++를 해준다.
<코드>
JAVA
weight: 키와 몸무게를 저장하는 배열
rank: 순위를 저장하는 배열
Python
people: 키, 몸무게, 순위가 저장되는 리스트
JAVA
import java.util.Scanner;
public class B7568 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // n만큼 작동
int[][] weight = new int [n][2]; // 덩치 저장
int[] rank = new int [n];
for(int i = 0; i < n; i++) { // 덩치 구하기
int kg = sc.nextInt();
int height = sc.nextInt();
// input
weight[i][0] = kg;
weight[i][1] = height;
rank[i] = 1; // 초기화
}
for(int i = 0; i < n; i++) { // 브루트포스 알고리즘
for(int j = 0; j < n; j++) {
if(i == j) { // 자기 자신과 비교 불가능
continue;
}
// 키와 몸무게가 모두 커야 덩치가 큰 것임
if(weight[i][0] < weight[j][0] && weight[i][1] < weight[j][1]) { // 덩치가 작으면 순위 밀림
rank[i]++;
}
}
}
for(int i = 0; i < n; i++) {
System.out.print(rank[i] + " ");
}
sc.close();
}
}
Python
N = int(input()) # 사람 수
people = [ # 사람 정보 리스트
{ 'weight': 0, 'height': 0, 'rank': 1} for _ in range(N)
]
# input
for i in range(N):
w, h = map(int, input().split())
people[i]['weight'] = w
people[i]['height'] = h
# compare
for i in range(N):
for j in range(N):
if people[i]['weight'] < people[j]['weight'] and people[i]['height'] < people[j]['height']:
people[i]['rank'] += 1
# print
for _ in range(N):
print(people[_]['rank'], end=" ")
728x90
반응형
'~2023' 카테고리의 다른 글
[JAVA/PYTHON] 백준 1158번 문제, 요세푸스 문제 (0) | 2021.06.26 |
---|---|
[JAVA] 백준 2822번 문제, 점수 계산 (0) | 2021.06.25 |
[MySQL] MySQL 8.0에서 스키마, 테이블 구조 보기 (0) | 2021.06.22 |
[Ubuntu] Ubuntu 20.04 Anaconda3 install / 아나콘다 설치 (0) | 2021.06.21 |
[Server] Apache2 https로 설정하기 (0) | 2021.06.21 |