코딩 테스트 연습/백준

[Python]Baekjoon 7568번: 덩치

jaeheon0520 2024. 2. 27. 22:40

1. 문제

 

https://www.acmicpc.net/problem/7568

 

7568번: 덩치

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

www.acmicpc.net

 

키와 몸무게가 주어졌을 때, 각 사람들의 덩치 순위를 구하는 문제이다.

 

키와 몸무게 모두 커야 '덩치가 크다'라고 할 수 있으며,

 

키, 덩치 둘 중에 하나만 크다면 같은 순위가 된다.

 

각 사람들의 덩치 순위를 한 줄에 공백을 사이에 두고 출력하면 된다.

 

2. 풀이

'순위'라는 것은 '나보다 뛰어난 사람이 몇 명 있는가?'라는 의미로 생각할 수 있다.

 

즉, 나보다 덩치가 큰 사람이 몇 명 있는지를 세면 등수를 확인 할 수 있다.

 

등수는 1등부터 시작이므로 cnt = 1로 초기화 하고, 등수를 빈 리스트에 append 해서 출력하면 된다.

 

3. 코드

import sys
input = sys.stdin.readline

N = int(input())
people = list()
answer = list()

for i in range (N):
    weight, height = map(int, input().split())
    people.append((weight, height))
   
for i in range (N):
    cnt = 1
    j = i
    for j in range (N):
        if (people[i][0] < people[j][0] and people[i][1] < people[j][1]):
            cnt += 1
    answer.append(cnt)
   
for i in answer:
    print(i, end=" ")  

 

4. 느낀점

C++에서는 Vector에 원소를 묶어서 추가할 때, make_pair를 이용하였는데,

 

파이썬에서는 tuple을 이용해서 간단하게 .append((weight, height)) 형태로 추가할 수 있었다.

 

완전 똑똑한 언어이다.

 

한 줄에 출력하는 과정도 처음에는 익숙하지 않았는데 end = " "라는 방법이 있음을 알게 되었다.

 

end = " " 이 있다면 출력 뒤에 공백이 붙고 없다면 개행이 붙는다.

 

.join() 메서드는 다음과 같이 활용한다.

 

my_list = ['Hello', 'world', 'how', 'are', 'you']
result = ' '.join(my_list)
print(result)



.join() 메서드는 int 에는 사용할 수 없고 문자열에서만 사용할 수 있다.

 

오늘 하루도 쌓였다!