https://www.acmicpc.net/problem/1302
n = int(input())
a_list = []
for i in range(n):
a = input()
a_list.append(a)
a_list2 = list(set(a_list)) # 집합자료형 set를 사용하여 중복을 제거
a_list3 = [] # 가장 많이 팔린 책을 담을 리스트
best = 0
for j in range(len(a_list2)): # 가장 많이 팔린 책의 수로 best 초기화
if a_list.count(a_list2[j]) >= best:
best = a_list.count(a_list2[j])
for k in range(len(a_list2)):
if a_list.count(a_list2[k]) >= best:
a_list3.append(a_list2[k])
a_list3.sort()
print(a_list3[0])
16번째 줄을 원래 best 보다 작은 경우 a_list2의 요소를 삭제하려고 했으나 요소를 삭제하는 경우 k의 값이 a_list2의 최대 인덱스보다 넘어가는 경우가 생기게 되어 해당하는 요소를 새 리스트 a_list3에 담는 식으로 풀이를 했다. 나중에 더 좋은 풀이로 한 번 더 풀어봐야겠다.
집합자료형 set를 사용해 리스트의 중복요소를 제거하기
for문을 사용해 리스트 특정 인덱스를 제거할 때 주의하기