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
'내일배움 캠프 > TIL' 카테고리의 다른 글
2023 03 31 키워드 인수를 한번에 가져와서 간단하게 쓰기! (0) | 2023.03.31 |
---|---|
2023 03 30 json을 이용한 세이브 & load (0) | 2023.03.31 |
2023 03 28 파이썬 rpg 저장 구현,,, (0) | 2023.03.29 |
2023 03 27 파이썬 터미널 RPG 만들기 (0) | 2023.03.29 |
2023 03 24 재귀 함수를 이용해서 복리 구하기 (0) | 2023.03.24 |