728x90

문제 참고 https://www.acmicpc.net/problem/7568

 

7568번: 덩치

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

www.acmicpc.net

 

키와 몸무게가 주어질 때 두 가지 모두 커야 덩치가 크다.

각각 리스트에 넣어준 후 for문을 이용해 모두 큰 경우에만 카운팅을 해주었다.

하지만 문제에서 원하는 결과는 '내가 몇번 째로 크냐'가 아닌 '나보다 큰 사람이 몇명인가' 였다.

 

 

N = int(input())


height = [] # 키를 담을 리스트
weight = [] # 몸무게를 담을 리스트
cnt = N

for i in range(N):
    x,y = map(int, input().split())
    height.append(y)
    weight.append(x)

for i in range(N):
    for j in range(N):
        if weight[i] > weight[j] and height[i] > height[j]:
            cnt -= 1
        elif weight[i] > weight[j] and height[i] < height[j]:
            cnt -= 1
        elif weight[i] < weight[j] and height[i] > height[j]:
            cnt -= 1
    print(cnt, end=' ')
    cnt = N

처음 푼 코드를 보면 문제를 잘 못 읽어 등수를 구하였고 테스트 케이스 중 틀린 것들이 나왔다.

 

 

문제를 다시 읽고 조건을 다시 확인하였고 덩치가 큰 사람을 만난다면 +1씩 해주었다.

# 덩치 - 키와 몸무게를 이용하여 등수 표현
# 키와 몸무게 둘다 커야 덩치가 크다
# 키는 크지만 몸무게가 적을 경우 동등수
# 사람 수 N 주어지고 
# N개의 줄에 x space y

#덩치 등수 구해서 첫줄에 출력

N = int(input())


height = [] # 키를 담을 리스트
weight = [] # 몸무게를 담을 리스트


for i in range(N):
    x,y = map(int, input().split())
    height.append(y)
    weight.append(x)
for i in range(N):
    cnt = 1
    for j in range(N):
        if i == j:
            continue                    # 같은 사람끼리 비교하지 않기위하여
        if (weight[i] < weight[j]) and (height[i] < height[j]):
            #if height[i] > height[j]:
            cnt +=1

    print(cnt, end=' ')
728x90