백준 1302

soss·2022년 11월 7일
0
post-thumbnail

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문을 사용해 리스트 특정 인덱스를 제거할 때 주의하기

profile
안녕하세요. 복습 목적으로 문제 풀이를 올리고 있습니다.

0개의 댓글