본문 바로가기
Problem Solving

[백준] 7568 덩치 python 알고리즘 문제

by DuncanKim 2022. 4. 20.
728x90

문제 7568. 덩치

 

1. 나의 코드와 발상 과정

import sys

n = int(sys.stdin.readline())
num_list = []

for i in range(n):
    x, y = map(int, sys.stdin.readline().split())
    num_list.append([x, y])

def dungchi(x, y):
    k = 0
    for i in range(n):
        if x < num_list[i][0] and y < num_list[i][1]:
            k += 1

    return k

rank_list = []
for i in range(n):
    rank_list.append(dungchi(num_list[i][0], num_list[i][1]))

for i in range(n):
   print(rank_list[i] + 1, end=" ")

 

문제가 길어서 읽기 귀찮았지만, 읽어내려가 보았다.

덩치의 순위를 출력하라는 것인데, 덩치가 몸무게 + 키 값이 아니라

몸무게와 키가 둘 다 비교값보다 더 커야 덩치가 더 크다고 인정받을 수 있다는 조건을 걸고 있다.

확연히 비교를 할 수 없을 경우 같은 랭크를 가질 수 밖에 없는 것이다.

 

문제에서 k, k+1이라는 힌트를 주었다. 문제 풀이에 활용을 하면 된다.

 

각자의 몸무게와 키를 가지고 있는 이차원 배열을 만들었다.

그리고 def를 활용해서 dungchi라는 함수를 정의했다.

x, y 매개변수를 가지고 num_list[i][0](몸무게) 보다 작은 x값, num_list[i][1](키) 보다 작은 y값을 가지고 있을 때

k(나보다 덩치큰 사람의 숫자)를 더하게 했다. 반복문이 모두 끝나면 k값을 리턴한다.

 

이를 rank_list 밑단의 for문에서 활용한다.

dungchi 함수를 활용하여 rank_list에 그 몸무게와 키를 가지고 있는 사람보다 더 덩치가 큰 사람의 숫자는 몇 인지를 rank_list에 삽입하는 것이다. 

 

그런 다음 출력을 건다.

 

 

 

2. 아쉬운

더 열심히 def 를 공부해야 겠다...

 

 

+++

실버3이 어떻게 된지 모르겠지만 빨리 실버4 문제들을 넉넉하게 풀 수 있는 실력이 되었으면 좋겠다......

728x90

댓글