공부하기/백준

[Python] 백준 풀기 7568 - 덩치

XEV 2022. 10. 24. 21:18

파이썬 백준 7568번

실버5

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

 

7568번: 덩치

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

www.acmicpc.net

 

 

 

 

문제 보기

모든 사람을 비교하여 덩치 등수를 구하는 문제

분류: 구현, 브루트포스 알고리즘

 

 

 

문제 풀기

기준이 되는 한 명을 선택하여 그에 대한 나머지 사람들과 덩치를 비교하여 순위를 매긴다.

 

2차원 배열 형태로 사람들을 입력받는다. 리스트의 사람 수 만큼 for 문을 돌리면서 변수 i 로 각각 매번 기준을 잡고 j 번째 사람과 비교를 하는데 현재의 사람 i 의 덩치보다 비교 대상 j 의 덩치가 더 클 경우 ranking 을 증가시킨다.

            if person_ls[i][0] < person_ls[j][0] and person_ls[i][1] < person_ls[j][1]:
                ranking += 1;

매번 i 가 끝날때마다 ranking_ls 에 index 에 맞게 저장을 한다.

모든 중복 for 문이 돌고 나면 ranking_ls 를 return 시킨다.

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline

def fnStrongPhysique(person_ls):
    ranking_ls = [None] * N
    for i in range(len(person_ls)):
        ranking = 1
        for j in range(len(person_ls)):
            if person_ls[i][0] < person_ls[j][0] and person_ls[i][1] < person_ls[j][1]:
                ranking += 1;
                
        ranking_ls[i] = ranking
    
    return ranking_ls


if __name__ == "__main__":
    N = int(inputdata().strip())
    person_ls = [list(map(int, inputdata().split())) for _ in range(N)]
    
    print(person_ls)            # test print
    
    result = fnStrongPhysique(person_ls)
    print(*result)



# 6
# 55 181
# 54 181
# 56 181
# 55 179
# 56 182
# 54 190

# [[55, 181], [54, 181], [56, 181], [55, 179], [56, 182], [54, 190]]

# 2 2 1 3 1 1