반응형
https://www.acmicpc.net/problem/1302
import sys
input = sys.stdin.readline
n = int(input())
map = dict() # map 자료구조
for _ in range(n):
str = input().rstrip('\n')
if str in map: # 맵에 입력받은 키가 있다면 +1
map[str] += 1
else: # 없다면 0으로 초기화
map[str] = 0
# list.sort() 는 list 를 바꾸지 않고 정렬한 후에 반환함. 그래서 그자체를 바꾸려면 sorted(list) 해야됨.
print(sorted([k for k,v in map.items() if max(map.values()) == v])[0])
map 자료구조를 이용하여 풀었다.
새로운 문자열을 받으면 일단 문자열이 기존의 key 값인지 확인하고, 있다면 +1을, 없다면 = 0 으로 초기화해주었다.
그리고 value 가 최댓값인 key 값을 구하기 위해 리스트 컴프리헨션을 이용했다. 저렇게 하면 최댓값이 여러개인 것도 리스트로 반환할 수 있어서 후처리할 수 있다.
하다보니 list.sort()[0] 으로 하니 None 값을 뱉었는데, 파이썬에서는 list.sort()가 list를 변경하는 것이 아닌, 정렬 후 새 리스트를 반환한다. 기존의 리스트를 정렬하려면 sorted(list)를 해야하고, 문자열 리스트 중 사전 순으로 처음으로 나온 것을 뽑기 위해 첫 요소를 뽑아내면 답이 나온다.
반응형
'알고리즘 🤔' 카테고리의 다른 글
[백준 파이썬 2512] 예산 (0) | 2023.01.10 |
---|---|
[백준 파이썬 2309] 일곱 난쟁이 (0) | 2023.01.10 |
[백준 파이썬 11286] 절댓값 힙 (0) | 2023.01.10 |
[백준 파이썬 10844] 쉬운 계단 수 (실버 1) (0) | 2022.11.22 |
[백준 파이썬 1926] 그림 (1) | 2022.11.21 |