Eat the ENAK

BOJ7568 - 덩치 본문

PS: Problem Solving/BOJ: 백준온라인저지

BOJ7568 - 덩치

으낙 2019. 10. 30. 00:00

문제 바로가기

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

Solved.ac* 난이도

* Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요.

 


본문


해설

https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/7568/7568.py

 

이 문제도 분류가 브루트포스이다. 전수조사를 통해 풀 수 있음을 명심하고 풀이에 들어간다.

 

\(N\)명의 키와 몸무게가 주어지는데, \(N < 50\)이어서 아무리 커도 배열크기가 \(50 x 50\)을 넘지 않는다. 따라서 \(N x N\)짜리 2차원 배열을 생성하는 직관적 풀이를 해보자.

 

먼저 \(N\)명의 키와 몸무게를 받아오자.

N = int(input())

humans = []
for n in range(N):
    weight, height = map(int, input().split(' '))
    humans.append((weight, height))

이후 전수조사를 위한 2차원 배열을 만들어주고

# 전수조사 비교를 위한 2차원 배열 생성
matrix = [[False for x in range(N)] for y in range(N)]

배열을 전부 돌면서 체크해준다.

for i in range(N):
    mw, mh = humans[i]
    for j in range(N):
        w, h = humans[j]

        if mw > w and mh > h:
            matrix[j][i] = True

이렇게되면 matrix[0][0] ~ matrix[n-1][n-1]의 대각선에 해당하는 경우는 자기 자신과 비교하게 되는 모습이 나온다. 그리고 각 행에 자기보다 큰 경우 True값을 넣어두었기 때문에 행에 대해 개수 체크만 해주면 된다.

ranks = [x.count(True) + 1 for x in matrix]
print(" ".join(map(str, ranks)))

 

 

 

'PS: Problem Solving > BOJ: 백준온라인저지' 카테고리의 다른 글

BOJ1001 - A-B  (1) 2019.10.31
BOJ1000 - A+B  (0) 2019.10.30
BOJ1436 - 영화감독 숌  (0) 2019.10.30
BOJ2750 - 수 정렬하기  (0) 2019.10.30
BOJ2231 - 분해합  (0) 2019.10.29
Comments