반응형
문제
구현
코드
import statistics
def solution(array):
temp = statistics.multimode(array)
return -1 if len(temp)>1 else temp[0]
statistics의 multimode를 사용해 최빈값을 추출했다.
참고 : (https://docs.python.org/ko/dev/library/statistics.html)
multimode의 설명은 다음과 같다.
array에서 먼저 발견되는 순서대로 가장 자주 등장하는 값의 리스트를 반환한다.
여러 최빈값이 있으면 둘 이상의 결과를 반환하고 비어있다면 빈 리스트를 반환한다.
이 방법은 잘 쓰지 않는 방법이라 코딩테스트에서는 권장하지 않는다.
다른 풀이
enumerate를 써서 배열의 값을 인덱스와 함께 추출해서 반복을 할 수 있다.
enumerate 는 각 값에 번호를 매겨서 리턴해준다. ( ex ['a','b','c','d','e'] => <0,'a' 1,'b' 2,'c'....> )
set으로 타입캐스트를 해서 중복을 제거해주고
중복을 제거 된 set으로 array에서 값이 없어질 때까지 한번씩 지운다.
i가 0이라면 ( 모두 지워지고 하나의 값만 남았다면 ) 그 값을 리턴하고
아니라면 다 지워진 것이므로 -1을 리턴한다.
def solution(array):
while len(array) != 0:
for i, a in enumerate(set(array)):
array.remove(a)
if i == 0: return a
return -1
반응형
'Coding Test > 프로그래머스 코딩테스트 입문' 카테고리의 다른 글
Python 피자 나눠 먹기 (1) [코딩테스트 입문 - Day4] (2) | 2023.01.17 |
---|---|
Python 중앙값 구하기 [코딩테스트 입문 - Day3] (0) | 2023.01.16 |
Python 나머지 구하기 [코딩테스트 입문 - Day3] (0) | 2023.01.16 |
Python 짝수는 싫어요 [코딩테스트 입문 - Day3] (0) | 2023.01.16 |
Python 분수의 덧셈 [코딩테스트 입문 - Day2] (0) | 2023.01.13 |
댓글