본문 바로가기

Python(알고리즘,문제풀이)/BOJ(Silver V)

백준 / 7568번 / 덩치 / Python / 브루트포스 알고리즘

728x90

📚문제

출처 : 백준 7568번(https://www.acmicpc.net/problem/7568)

 

📝풀이

# 7568번 덩치 
n = int(input())
body = []
for _ in range(n):
    x,y = map(int,input().split())
    body.append([x,y])

result = []
for i in body:
    rank = 1
    new_body = list(filter(lambda x : x !=i,body))
    for j in new_body:
        if i[0] < j[0] and i[1] < j[1]:
            rank += 1
    result.append(str(rank))
print(' '.join(result))

실버라서 긴장했는데 생각보다 쉽게 풀렸다

 

한가지 새로 알게된 개념은

filter

리스트에서 remove 함수를 사용하게 되면 

변수에 할당하는 것이 아니라 remove된 리스트만 반환하기 때문에 변수로 설정할 수 없다

그래서 자기 자신의 몸무게와 키를 제외하기 위해

다음과 같이 코드 작성

list(filter(lambda x : x !=i,body))

filter 함수

조건을 만족하는 요소들로 이루어진 새로운 iterable 생성한다

 

여기서는 body 리스트에서

자기 자신과 같지 않은 원소들을

필터링 하여 리스트로 저장

(필터함수 또한 map 함수와 유사하게 filter 객체를 생성하기 때문)

728x90