프로그래밍/Python

프로그래머스_python lv0. 최빈값 구하기

O'bin 2023. 1. 7. 22:21

https://school.programmers.co.kr/learn/courses/30/lessons/120812

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 답안 : 

결국 못풀었다

 

 

개선 답안 : 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(array):
    #count 딕셔너리 생성해서 횟수 세기
    count = {}  # count dictionary 선언
    for num in array:   # 입력받은 array의 모든 원소를 반복
        if num not in count:    # array원소가 count에 없으면
            count[num] = 0      # count에 그 원소값 넣고 value 0으로 설정
        count[num] +=1          # array원소가 count에 있으면 value에 1 추가
    
    # 가장 큰 빈도수 찾기
    max_val = 0
    for k, v in count.items(): # 딕셔너리 자료의 키와 값을 쌍으로 하여 반복
        if v > max_val:         # v(빈도수)가 가장 큰 값 찾기
            max_val = v
    
    max_cnt = [k for k,v in count.items() if v == max_val]  # 최빈값 max_cnt리스트에 넣기
    if len(max_cnt) >1 :    # 최빈값이 1개 초과할 경우
        return -1
    else:
        return max(count, key=count.get)    # max함수 안의 값 중 가장 큰 값 리턴
cs

 

 

 

리스트, 딕셔너리 등 파이썬의 배열 형태 활용하는 것 염두에 두기

배열 반복문으로 원하는 값 뽑아내는 과정 숙지하기