Computer Knowledge/코테 대비 오답노트
[python] 최빈값 구하기
l._.been
2023. 5. 22. 19:58
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120812
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
def solution(array):
arr = [0]*1000
for i in array:
arr[i] += 1
n = arr.count(max(arr))
if n >= 2:
return -1
elif n == 1:
return arr.index(max(arr))
나는 각 숫자가 몇번 나왔는지 배열 arr를 생성해서 기록했다
n은 가장 많이 나온 원소의 갯수를 말한다.
n이 2이상이면 -1
n이 1이면 가장 많이 나온 원소를 return 한다.
인상적인 풀이
def solution(array):
while len(array) != 0:
for i, a in enumerate(set(array)):
array.remove(a)
if i == 0: return a
return -1
set을 사용해서 중복을 제거한 배열을 원본인 array에 그 원소들을 제거한다.
if i ==0: 부분에 i는 아마도 for문에서 값이 남아있다는 점을 노려서 조건문을 만들어 준것같다