종식당

[프로그래머스 lv.1] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위 본문

프로그래머스

[프로그래머스 lv.1] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위

종식당 2024. 3. 19. 16:51
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

  • 문제 설명
    win_nums리스트에는 당첨 번호가 저장되어 있고 lottos리스트에는 구매한 로또 번호가 저장되어 있다. lottos리스트에는 0이 있을 수도 있는데 만약 0이 있다면 이를 당첨되었다고 친 후 전체 당첨 개수에 더해 순위를 배열에 저장하다. 그리고 실제 0을 제외하고 실제 당첨된 개수를 가지고 순위를 구해서 배열에 저장한 후 이를 반환하면 된다

 

  • 문제 접근 방법
    문제가 생각보다 어렵지 않아서 빠르게 생각해낼 수 있었다.
    먼저 당첨된 갯수와 순위를 딕셔너리에 저장해 두었다. 그리고 lottos배열에서 0의 개수를 세주고 다음으로 실제로 몇 개가 당첨되었는 지를 구했다.
    최고 순위는 실제 당첨 갯수와 0의 개수를 더한 것과 같고 최소 순위는 실제 당첨 개수와 같으니까 이를 key로 이용해 해당 value 즉, 순위를 배열에 저장한 후 반환해 줬다.

  • 정답 코드
def solution(lottos, win_nums):
    answer = []
    dict = {6:1,5:2,4:3,3:4,2:5,1:6,0:6}
    cnt = lottos.count(0)
    
    k = 0
    for i in lottos:
        if i in win_nums:
            k+=1
    best = cnt+k
    worst = k
    
    # answer.append(dict[best])
    # answer.append(dict[worst])
    # return answer
    return [dict[best],dict[worst]]
728x90
반응형