2023.03.11

7568번: 덩치

문제에서는 덩치가 큰 사람에 따라서 등수를 매긴다고 한다… ‘덩치가 크다’라는 의미는 몸무게 키 모두 자신보다 큰경우만 해당하는데…


이러다 보니 몸무게는 나보다 적은데, 키는 나보다 큰 경우 등에는 누가 덩치가 큰지 알기 어렵다는 문제가 있다.


이를 방지하기 위해서 자신보다 덩치큰 사람의 수로 등수를 매기는 것인데.. 우선 몸무게와 키를 받자!


입력

한사람당 몸무게와 키 2가지 입력을 받아야 하는 경우인데.. A라는 사람에 접근하면, 몸무게와 키를 반환해야하기 때문에 list에 ()튜플 형태로 받는다.

N = int(input())
nums = []
for i in range(N):
    a, b = map(int, input().split())
    nums.append((a, b))

이러면 nums[i][0] -> 몸무게, nums[i][1] -> 키 로 반환이 된다.


다음으로 각각 사람마다 비교해서 자신보다 덩치큰 사람의 수를 계산한다.

grade = []
for i in range(N):
    grade.append(0)
    for j in range(N):
        if nums[i][0] < nums[j][0] and nums[i][1] < nums[j][1]:
            grade[i] += 1


grade 라는 리스트를 정의해서 i번째 사람마다 자신보다 덩치큰 사람 수를 카운트한다.


이제 등수를 산정하면 되는데… 자신보다 덩치큰 사람의 수이기 때문에 1등은 자신보다 큰사람이 없을 것이고, 2등은 1명, 3등은 2명, 4등은 3명… 즉, n등은 자신보다 덩치큰 사람이 n-1명 있는 것이다.


반대로 생각하면 자신보다 덩치큰 사람 수+1 = 등수이다!


출력

result = ''
for i in grade:
    result += str(i+1) + ' '
print(result)

이러면 성공적으로 각각 등수를 출력하게 된다.


풀이

if __name__ == '__main__':
    N = int(input())
    nums = []
    for i in range(N):
        a, b = map(int, input().split())
        nums.append((a, b))

    grade = []
    for i in range(N):
        grade.append(0)
        for j in range(N):
            if nums[i][0] < nums[j][0] and nums[i][1] < nums[j][1]:
                grade[i] += 1

    result = ''
    for i in grade:
        result += str(i+1) + ' '
    print(result)

Tags:

Categories:

Updated:

Leave a comment