[BOJ] 7568 덩치

[BOJ] 7568 덩치

문제 링크

이 문제는 각 개체가 가진 값을 비교하며 순위를 매겨야한다.

각 사람의 키와 몸무게 값을 담을 array를 생성하고 여기에 각 키와 몸무게 그리고 Index까지 함께 append했다.

그리고 ranks 배열도 추가로 작성하여 초기값을 0으로 모두 초기화하고 이중 for 문을 작성하여 모든 값을 선회하면서 rank를 저장했다.

처음에는 중복된 순위를 어떻게 해결해야할지 몰랐는데, 다른 사람에 비해서 키와 몸무게가 모두 작으면(조건) rank를 1씩 상승하는 방식으로 중복 순위에 대한 고민을 해결할 수 있었다.

나의 풀이

#몸무게 : x
#키 : y
#덩치 : (x,y)

import sys
input = sys.stdin.readline

n = int(input())  #사람 수
array = []
ranks = [0] * n

for i in range(n):
  x, y = map(int, input().strip().split())
  array.append((x,y,i))  

for i in range(n):
  rank = 1
  for j in range(n):
    if array[i][0] < array[j][0] and array[i][1] < array[j][1]:
      rank += 1
  ranks[array[i][2]] = rank

for rank in ranks:
  print(rank, end=" ")

이렇게 작성하고 보니 ranks 배열이 굳이 필요없다는 것을 깨달았고 다음과 같이 수정했다.

import sys
input = sys.stdin.readline

n = int(input())  #사람 수
array = []
ranks = [0] * n

for i in range(n):
  x, y = map(int, input().strip().split())
  array.append((x,y))  

for i in range(n):
  rank = 1
  for j in range(n):
    if array[i][0] < array[j][0] and array[i][1] < array[j][1]:
      rank += 1
  print(rank, end=" ")


© 2021. All rights reserved.