본문 바로가기

내일배움 캠프/TIL

2023 03 29 코딩테스트 최빈값 구하기

return answer[0] if len(answer) ==1 else -1

문제설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

 


제한사항
0 < array의 길이 < 100
0 ≤ array의 원소 < 1

 

입출력 예

array  result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

주어진 리스트에서 각각의 숫자가 몇번 나왔는지 알기위해 어떻게 하면

갯수를 카운트 할수있을지 생각을 했습니다

 

그러다가 생각난게 딕셔너리를 활용하는 방법이었고

딕셔너리를 사용하기위해 for문을 통해 리스트를 순환하면서 같은 숫자가 나오면 

그 딕셔너리의 키값에 있는 데이터에 +1을 하는방식으로 데이터를 카운트 했습니다

 

check = {}
for i in array:
	try:check[i]+=1
	except:check[i]=1

그 후 각 숫자별로 주어진 데이터값들을 max를 통해서 최대값을 찾아서

data값을 비교해서 최대값과 같으면 key값을 answer의 리스트에 넣었습니다

count = max(check.values())
for key,data in check.items():
	if count == data:
	answer.append(key)

이런방식을 통해서 return 에 len이 1을 초과하면 -1이 아니면

그 리스트의 0번째 값을 반환 시켜서 최빈값을 구하는 방법을 취했습니다!!

return answer[0] if len(answer) ==1 else -1