def solution(array):
arr = list(set(array))
dict = {}
for i in arr:
count = array.count(i)
dict[i] = count
answer = sorted(dict.values(), reverse=True)
if len(answer) > 1 and answer[0] == answer[1]:
return -1
else:
return next(iter(answer))
arr 이라는 중복이 제거된 리스트로 count를 할 i를 결정하고
dict라는 딕셔너리 자료형에 i : count된 i 의 개수를 저장했다.
그리고 내림차순을 통해서
만약 answer의 개수가 2개라면 answer[0] 값과 answer[1]값을 비교 후
같다면 -1 반환
같지 않다면 answer[0]의 키 값을 반환하는 식으로 문제를 해결했다.
하지만 타임아웃으로 문제해결을 실패했다.
책에 나온대로 풀어야겠다.
오래전에 풀었던 문제이므로 복기할 겸 다시 적어두겠다.
def solution(array):
answer = 0
dict_array = {}
for i in array:
if i in dict_array:
dict_array[i] += 1
else:
dict_array[i] = 1
max_idx = -1
max_cnt = 0
for i in dict_array:
# print(dict_array[i])
if dict_array[i] > max_cnt:
max_cnt = dict_array[i]
max_idx = i
elif dict_array[i] == max_cnt:
max_idx = -1
answer = max_idx
return answer
좋아요 제일 많이 받은 풀이
def solution(array):
while len(array) != 0:
for i, a in enumerate(set(array)):
array.remove(a)
if i == 0: return a
return -1