보자마자 lambda 함수로 정렬해놓고
나라 번호 저장하는 배열 하나 만들면
우선순위도 해결되겠다고 생각하며
풀기 시작했다.
lambda를 매번 까먹는 1인..
array=sorted(array,key=lambda x:x[2], reverse=True)
[a,b,c] -> c 기준으로 내림차순 정렬
만약 answer의 길이가 3개가 되면
이미 금은동이 정해진 거니까
반복문에서 빠져나온다.
시간 : 84ms..? 거의 맨 끝이다..
고수님들의 코드를 한 번 탐색하러 가봤다!
n = int(input())
# lambda로 정렬
array = [list(map(int, input().split())) for _ in range(n)]
array = sorted(array, key=lambda x: x[2], reverse=True)
answer = []
country = []
for idx in range(len(array)):
if len(answer) == 3:
break
if country.count(array[idx][0]) < 2: # 2개 이하
answer.append(array[idx][0:2]) # 값 넣기
country.append(array[idx][0]) # 나라 번호 넣기
continue
for i in range(3):
print(answer[i][0], answer[i][1])
이 방식도 생각안해본 건 아니었는데
이렇게 짜니까 시간이 더 적게 나온다
country_num을 뽑아내고, 그 크기만한 배열을 초기화해주고
인덱스 번호를 이용해서 금,은,동 나라번호 체크를 해주면 된다!
n = int(input())
# lambda로 정렬
array = [list(map(int, input().split())) for _ in range(n)]
country_num=array[-1][0]
array = sorted(array, key=lambda x: x[2], reverse=True)
answer = [0] * (country_num+1)
cnt = 0
for i in array:
if cnt >= 3:
break
if answer[i[0]] < 2:
print(i[0],i[1])
answer[i[0]] += 1
cnt += 1
else:
continue
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[n14248] 점프 점프 in python (0) | 2021.10.20 |
---|---|
[n14889] 스타트와 링크 in python (0) | 2021.10.20 |
[n1292] 쉽게 푸는 문제 in python (0) | 2021.10.18 |
[n11655] ROT13 in python (0) | 2021.10.18 |
[n1058] 친구 in python (0) | 2021.10.15 |