본문 바로가기

Problem Solving/Baekjoon Online Judge

<브루트 포스> 7568번 덩치 with 파이썬

 

문제

 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼 때 C와 D는 누구도 상대방보다 더 크다고 말할 수 없다.

 

 N명의 집단에서 각 사람의 덩치 등수는 자신보다 더 "큰 덩치"의 사람의 수로 정해진다. 만일 자신보다 더 큰 덩치의 사람이 k명이라면 그 사람의 덩치 등수는 k+1이 된다. 이렇게 등수를 결정하면 같은 덩치 등수를 가진 사람은 여러 명도 가능하다. 아래는 5명으로 이루어진 집단에서 각 사람의 덩치와 그 등수가 표시된 표이다.

이름(몸무게, 키)덩치 등수

A (55, 185) 2
B (58, 183) 2
C (88, 186) 1
D (60, 175) 2
E (46, 155) 5

 위 표에서 C보다 더 큰 덩치의 사람이 없으므로 C는 1등이 된다. 그리고 A, B, D 각각의 덩치보다 큰 사람은 C뿐이므로 이들은 모두 2등이 된다. 그리고 E보다 큰 덩치는 A, B, C, D 이렇게 4명이므로 E의 덩치는 5등이 된다. 위 경우에 3등과 4등은 존재하지 않는다. 여러분은 학생 N명의 몸무게와 키가 담긴 입력을 읽어서 각 사람의 덩치 등수를 계산하여 출력해야 한다.

입력

 첫 줄에는 전체 사람의 수 N이 주어진다. 그리고 이어지는 N개의 줄에는 각 사람의 몸무게와 키를 나타내는 양의 정수 x와 y가 하나의 공백을 두고 각각 나타난다.

출력

 여러분은 입력에 나열된 사람의 덩치 등수를 구해서 그 순서대로 첫 줄에 출력해야 한다. 단, 각 덩치 등수는 공백문자로 분리되어야 한다.

정답비율

 59.094%

 

 

N = int(input())
lst = []
for i in range(N) :
    w,h = map(int,input().split())
    lst.append((w,h))
# print(lst)
# [(55, 185), (58, 183), (88, 186), (68, 175), (46, 155)]

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

  처음에 고민하느라 시간을 너무 잡아먹었다. 각각 비교해가면서 가장높으면 1등 그다음이면 2등인 방식인 것은 알겠는데 공동등수를 어떻게 표현해야할지 너무 막막했다. 하지만 답은 생각보다 엄청나게 간단했다. 1등부터 생각할 것이 아니라 거꾸로 키와 무게 모든 면에서 큰 인원이 몇명인지 세기만 하면 되는 것이다. 

 

 리스트에 각각의 튜플을 담아주었다. 인덱스i를 이용하여 비교대상을 첫번째부터 돌도록 하였다. rank는 1부터 시작하고 인덱스j를 이용해서 모든인원을 비교하도록 하였다. 키와 몸무게 모두 다른인원보다 작을때마다 rank를 1씩더하고 결과를 출력시켰다.

 

 기초가 안되어있다보니 컴퓨팅 사고가 매우 약하다는 것을 깨달았다. 차근차근 CS를 공부해서 어떻게하면 컴퓨팅적인 사고를 할 수 있을지 고민해봐야겠다.

 

 나는 인간이 아니다.. 나는 컴퓨터다.. 나는 컴퓨터다.. 나는 컴퓨터다.. 나는 컴퓨터.......

 

 


 

참고

 

 

7568번: 덩치

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

www.acmicpc.net