[백준] 덩치_7568번

손시연·2022년 4월 7일
0

algorithm

목록 보기
7/18

덩치_7568번

코드

n = int(input())
x_y = []
for _ in range(n):
    x_y.append(list(map(int, input().split())))

rank = [0] * n
for i in range(n):
    for j in range(n):
        if x_y[i][0] < x_y[j][0] and x_y[i][1] < x_y[j][1]:
            rank[i] += 1  # 자신보다 덩치가 작은 사람의 수

# 덩치 등수는 자신보다 덩치가 작은 사람의 수 + 1 이다
for r in rank:
    print(r+1, end=" ")

풀이노트

  1. 첫번째 시도
  • 몸무게에 대하여 i번과 i+1번을 비교했을 때, 더 큰 쪽에 +1 을 함
    • but 몸무게가 같은 경우 처리 방법이 곤란
    • 키에 대해서도 똑같이 진행
  • 몸무게 랭킹 + 키 랭킹 을 합침
rank = [xR+yR for xR, yR in zip(ranking(xList), ranking(yList))]
  • rank 값이 가장 큰 원소 == 1등
  • 덩치 순위를 계산하는 방법이 어려워서 포기
  1. 두번째 시도
  • 문제 설명에 "두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다." 라고 명시되어 있음. 따라서 x = p, y > q 인 경우 두 사람의 덩치는 같음
if x_y[i][0] < x_y[j][0] and x_y[i][1] < x_y[j][1] :
	rank[i] += 1
  1. 세번째 시도
  • 덩치 등수는 나보다 덩치가 큰 사람이 몇 명 있는지를 나타내는 것!
    덩치 등수가 1이면, 자신보다 덩치가 큰 사람의 수는 0명임.
    덩치 등수는 자신보다 덩치가 작은 사람의 수 + 1 이다.

소요시간 : 2일

-- 내가 생각한 방식은 너무 복잡했고, 구글링을 통해서 해결해서 찝찝함

profile
Server Engineer

0개의 댓글