코딩테스트/BOJ

[백준] [구현] 7568. 덩치

박소민 2023. 5. 1. 11:31
7568. 덩치
 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩

www.acmicpc.net

 

  • 내 풀이
    • 입력받은 순으로 출력해야함 -> 딕셔너리
    • 몸무게순으로 정렬 후 키 비교
    • 몸무게는 작아도 키는 더 클 수 있기때문에 for문 2번돌면서 각각 비교해야함
    • 무조건 키, 몸무게가 더 커야하기 때문에 몸무게가 동일할때는 세지x

 

  • 사용한 반례
#반례
6
55 181
54 181
56 181
55 179
56 182
54 190

#결과
2 2 1 3 1 1
from collections import defaultdict
n=int(input())
dic= {}

for i in range(n):
    dic[i]=list(map(int,input().split()))

val=list(dic.items())
val.sort(key=lambda x:x[1][0], reverse=True)


tmp=[1]*n
cnt=0
for i in range(n-1):
    for j in range(i+1,n):
        if val[i][1][0] == val[j][1][0]: continue
        if val[i][1][1]> val[j][1][1]:
            tmp[val[j][0]]+=1

print(*tmp)

 

  • 다른 사람 풀이
    • 정렬할 필요 없이 완전탐색하면 되는 문제....
n = int(input())
 
data = [] # 입력받은 정보를 저장할 리스트 data
ans = [] # 등수정보를 저장할 리스트 ans
for i in range(n):
    a, b = map(int, input().split())
    data.append((a, b)) # 몸무계와 키를 묶어서 append 해줌
 
for i in range(n):
    count = 0
    for j in range(n):
        if data[i][0] < data[j][0] and data[i][1] < data[j][1]: # 몸무게와 키 모두 자신보다 큰 사람의 수를 센다
            count += 1 
    ans.append(count + 1) # 덩치 등수는 자신보다 몸무계 키 모두 큰 사람의 수 + 1 이므로 count + 1을 ans에 append한다.
 
for d in ans:
    print(d,end=" ")