알고리즘 3/29

justyoon·2023년 3월 29일
1

AI5 Python/Django

목록 보기
12/31

prblm

  • 09~12 알고리즘 세션 특강 및 문제풀기를 진행했다. 강의가 끝나고 단계별 문제가 구성된 페이지를 공유해주셔서 풀어보았다. 그 중에 한 문제를 정리한다. 프로그래머스 최빈값 구하기

try

  • sorted와 sort의 차이를 찾아보았다.
    이에 대해 따로 작성한 글이 있으니 링크 참조
def solution(array):
    answer = 0
    check = {}
    for ar in array:
        if ar not in check:
            check[ar] = 1
        else:
            check[ar] += 1
            
    sorted_check = sorted(check.items(), reverse=True, key=lambda item: item[1])
    if len(sorted_check) > 1: 
        if sorted_check[0][1] != sorted_check[1][1]:
            answer = sorted_check[0][0]
        else:
            answer = -1
    else:
        answer = sorted_check[0][0]
    
    return answer

solve

최빈값 = 주어진 값 중에서 가장 자주 나오는 값
함수명: solution
입력값: array # ex: [1, 2, 3, 3, 3, 4], [1, 1, 2, 2], [1]
출력값: answer # ex: 3, -1, 1
check라는 빈 딕셔너리 생성
for반복문으로 array 리스트를 돌면서 각 요소[ar]가 check 딕셔너리에 존재하는지 확인

check 딕셔너리에 요소가 존재하지 않는다면 해당 요소를 key로 하여 value값을 1로 생성, 존재한다면 해당 요소의 value값 1증가

check.items()를 사용하여 check{딕셔너리}의 모든 key와 value값을 반환 후 value값 기준으로 내림차순 정렬, 정렬된 check.items()를 확인하는 sorted_check 함수 작성.

sorted_check의 길이가 1보다 크고,

sorted_check[0]의 value값과 sorted_check[1]의 value값이 다르면, sorted_check[0]과 sorted_check[1]에서 value값(각 요소가 나타난 횟수) 비교 후 answer에 sorted_check[0]의 key값(가장 많이 나타난) 저장
sorted_check[0]의 value값과 sorted_check[1]의 value값이 같으면, answer에 -1 저장

sorted_check의 길이가 1보다 작거나 같다면,
answer에 sorted_check[0]의 key값 저장
answer 반환

learn

  • 알고리즘 자료구조의 공부를 어떻게 해야할지 난감했는데 지금 당장 마스터하는 것에 스트레스 받지 않기로 했다. 대신 하루에 한 문제라도 제대로 이해하고 넘어갈 수 있게 기록으로 남겨야겠다. 수료 때까지 프로그래머스 lv2 정도의 문제를 다 풀어보는 것을 목표로 설정하기로 했다. 알고리즘 학습 가이드에 따르면, 대부분 회사의 코테 기준은 lv2 문제를 다 풀면 통과할 수 있고, 대기업은 lv2~lv3의 50% 정도를 풀 수 있으면 통과가 가능하다고 한다.
profile
with gratitude, optimism is sustainable

0개의 댓글