반응형
11652
https://www.acmicpc.net/problem/11652
[정답1]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import sys
dic = {}
N = int(sys.stdin.readline())
for n in range(N):
a = int(sys.stdin.readline())
if a in dic.keys():
dic[a] += 1
else:
dic[a] = 1
if n == 0:
temp = a
if dic[temp] == dic[a]:
temp = min(temp, a)
elif dic[temp] < dic[a]:
temp = a
print(temp)
|
cs |
.
.
.
[정답2]
1
2
3
4
5
6
7
8
9
10
11
|
import sys
dic = {}
N = int(sys.stdin.readline())
for n in range(N):
a = int(sys.stdin.readline())
if a in dic.keys():
dic[a] += 1
else:
dic[a] = 1
dic = sorted(dic.items(), key = lambda x: (-x[1], x[0]))
print(dic[0][0])
|
cs |
.
.
.
[풀이]
최대 최소 비교하는 쉬운 문제다. [정답1]로 후딱 풀었다.
후에 [정답2]처럼 sorted()를 이용해서 간략화할 수 있다는 것을 알게 되었다.
dictionary, sorted(), key, lambda 등에 익숙하지 못해 조금 해맸다.
dictionary도 sorted()를 이용하여 정렬을 할 수 있다.
items를 입력값으로 받고, 정렬 기준 key를 lamda를 이용하여-x[1], x[0]순으로 한다.
즉, x[1] (카드의 개수)의 -(내림차순)으로 정렬하고
x[0] (카드 숫자)의 오름차순으로 정렬한다.
각각의 방법마다 메모리 효율, 시간 효율 장점이 있다.
p.s.
쉬운 문제로 기본을 다지는게 도움이 된다.
반응형
'백준 문제풀이' 카테고리의 다른 글
[백준 15654] 파이썬 : N과 M (5) (0) | 2021.10.09 |
---|---|
[백준 5555] 파이썬 : 반지 (0) | 2021.10.08 |
[백준 1049] 파이썬 : 기타줄 (0) | 2021.10.07 |
[백준 4796] 파이썬 : 캠핑 (0) | 2021.10.04 |
[백준 2960] 파이썬 : 에라토스테네스의 체 (0) | 2021.10.03 |