문제 리뷰
확실히 정렬 문제들을 오랜만에 푸는 것 같다.
sort 사용 방법을 많이 잊어버려서 하나 하나 검색해서 푼 것 같다.
그래도 다행히 기억이 남아 있어서 검색창에 입력하는 동안 기억이 되살아나서 풀고 그랬던 것 같다.
import sys
input = sys.stdin.readline
n = int(input())
cards = {}
for i in range(n):
num = int(input())
if num in cards:
cards[num] += 1
else:
cards[num] = 1
d = dict(sorted(cards.items(), key=lambda item: (item[1], -item[0]), reverse=True))
print(list(d)[0])
다시 기억 되살릴 것
1. dictionary 를 value 기준으로 정렬하기
: dict.items() 를 사용해서 배열인것처럼 정렬 가능(진짜 배열은 아님), key : value 쌍이 [key, value] 쌍으로 쓰이기에 index로 접근 가능하다.
: 다시 보니 dict로 다시 전환했다가 list로 또 바꿔줄 필요있나 싶기도 하다.
: 아래가 그걸 고친 부분
d = sorted(cards.items(), key=lambda item: (item[1], -item[0]),reverse=True)
print(d[0][0])
2. key 가 여러 개일 때 다른 순서로 정렬하기.
: 꽤 많이 접한 문제케이스인데 간만에 보니 어리벙벙해져서 기억이 안 났다.
: 검색창 열어서 쿼리 작성하다보니 갑자기 다시 방법이 스쳐서 옳게 풀었다.
: 제일 최우선되는 키를 기준으로 reverse True/False를 정하고,
만약 그것에 대치되는 순서라면 key에 들어갈 값을 음수로 만들면 된다. ( - 달면 됨~)
이런 문제는 진짜 메인이 아니라 기본으로 착착해야한다. 잊지 말자! 반복반복
'CodingTest > Baekjun Online Judge' 카테고리의 다른 글
| [ BOJ / 파이썬] 2579 계단 오르기 (0) | 2022.08.03 |
|---|---|
| [ BOJ / 파이썬 ] 1463 1로 만들기 (0) | 2022.07.30 |
| [ BOJ / 파이썬 ] 1431 시리얼 번호 (0) | 2022.07.29 |
| [ BOJ / 파이썬 ] 15688 수 정렬하기 5 (0) | 2022.07.29 |
| [ BOJ / 파이썬 ] 15686 치킨 배달 (0) | 2022.07.28 |