위 문제는 사람의 키와 몸무게에 따라서 사람들의 덩치를 순위로 나누고자 하는 문제이다. 이 문제의 요점을 정리해보면,
1. 첫 줄에는 전체 사람수 N, 둘째 줄 부터는 N번 만큼 그 사람의 몸무게와 키를 공백을 하나 둔 채 입력 받는다.
2. 어떤 한 사람이 다른 사람보다 몸무게, 키가 모두 클 시 덩치가 크다고 판단한다.
3. 이가 성립되지 않는다면, 두 사람은 덩치가 같은 것으로 인식된다.
4. 입력 받은 사람들의 덩치 순위를 출력한다. (같으면 같은 수로)
1. 문제 해결 방법
필자는 처음에 이 문제를 너무 복잡하게 접근하였다. 모든 사람들의 몸무게, 키 정보를 지닌 리스트를 만든 후, 덩치 순으로 정렬한 뒤 이를 입력한 순서에 맞추어 출력하고자 하였으나, 그 과정에서 고려하지 못한 경우의 수가 많아 제대로 된 결과 값을 얻지 못하였다. 또한, 너무 비효율적이라는 생각이 들었다.
그러던 와중, 각각 인물마다 계산하고 출력하는 형식으로 바꾸면 어떨까 하는 생각이 들었다. 인물마다 다른 인물끼리 비교해서 본인보다 덩치가 높다면 +1하는 형식이라면, 예외 사항 없이 깔끔하게 작성할 수 있었다.
2. 코드 작성
def size(n:int)-> str:
ppl = []
for _ in range(n): # 인원 수 만큼 몸무게, 키 받기
w, h = map(int, input().split())
ppl.append((w, h))
result = ''
for idx, i in enumerate(ppl):
rank = 1 # 기본 rank는 1로 잡기
for k in ppl:
if i[0]!=k[0] and i[1]!=k[1]: # 본인이 아닌 경우
if i[0]<k[0] and i[1]<k[1]: # 본인보다 몸무게/키가 큰 경우
rank += 1
result += str(rank)
if idx != n-1:
result += ' '
return result
if __name__ == "__main__":
n = int(input()) # 총 인원수 입력
print(size(n))
'백준' 카테고리의 다른 글
[백준]10989. 수 정렬하기 3(카운팅 정렬) (0) | 2021.03.03 |
---|---|
[백준]1436. 영화감독 숌 문제풀이 (파이썬, python) (0) | 2021.02.17 |
[백준]11729. 하노이 탑 이동 순서 문제풀이 (파이썬, python) (0) | 2021.02.14 |
[백준]2447. 별 찍기 - 10 문제풀이 (파이썬, python) (2) | 2021.02.14 |
백준 문제풀이 정리 항목 (0) | 2021.02.14 |
댓글