For Programmer
백준 7568번 파이썬 문제풀이(브루트 포스- 덩치) 본문
728x90
코드
n = int(input())
weightArray = []
for i in range(n):
x, y = map(int, input().split())
weightArray.append([x, y]) #이중리스트 형태로 저장
for i in weightArray: #이중리스트의 각 리스트에 접근
rank = 1 #순위 변수 1로 초기화
for j in weightArray: #이중리스트의 각 리스트에 접근(비교대상)
if i[0] < j[0] and i[1] < j[1]: #만약 첫번째 사람의 체중과 키가 다른사람의 체중과 키보다 작다면
rank += 1 #랭크를 +1 해준다.
print(rank, end=" ")
-> 이문제는 그냥 간단히 나보다 키와 몸무게가 큰 사람이 있으면 나의 순위에다가 +1만 해주면 되는 간단한 문제이다. 그 식이
if i[0] < j[0] and i[1] < j[1]: 여기 if문 한줄로 표현이 된다.
사실 이문제 정답보고 풀었다... 문제를 너무 어렵게 생각해서 각각의 체중과 키를 리스트에 저장해놓고 체중대로 , 키대로 정렬까지 해가면서 풀려고 하니 문제가 풀리지 않았다. 사실 if문 한줄이면 문제가 풀리는 건데...
만약 이문제를 랭크 순위대로 몸무게를 출력하라고 하면 어떻게 하면 될까?
이중리스트에 저장할 때 몸무게,키,순위값을 같이 저장해주면 된다. 그리고 나서 리스트를 랭크순위대로 정렬만 해주면 된다.(lamda이용)
n = int(input())
weightArray = []
for i in range(n):
x, y = map(int, input().split())
weightArray.append([x, y, i]) # 이중리스트 형태로 저장
for i in range(len(weightArray)): # 이중리스트의 각 리스트에 접근
rank = 1 # 순위 변수 1로 초기화
for j in range(len(weightArray)): # 이중리스트의 각 리스트에 접근(비교대상)
if weightArray[i][0] < weightArray[j][0] and weightArray[i][1] < weightArray[j][1]: # 만약 첫번째 사람의 체중과 키가 다른사람의 체중과 키보다 작다면
rank += 1 # 랭크를 +1 해준다.
weightArray[i][2] = rank #해당 랭크 값을 리스트에 같이 저장
#랭크 순위대로 정렬
weightArray.sort(key= lambda weightArray:weightArray[2])
#랭크 순위대로 출력(몸무게 출력)
for i in weightArray:
print(i[0],end=" ")
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 1436번 파이썬 문제풀이(브루트 포스- 영화감독 숌) (0) | 2021.10.07 |
---|---|
백준 1018번 파이썬 문제풀이(브루트 포스- 체스판 다시 칠하기) (0) | 2021.10.07 |
백준 2231번 파이썬 문제풀이(브루트 포스- 분해합) (0) | 2021.10.06 |
백준 2798번 파이썬 문제풀이(브루트 포스- 블랙잭) (0) | 2021.10.06 |
백준 11729번 파이썬 문제풀이(재귀 - 하노이탑 이동 순서) (0) | 2021.10.05 |
Comments