상세 컨텐츠

본문 제목

[coding_test]로또의 최고 순위와 최저 순위

coding/coding_test

by golduny_zoo 2021. 5. 20. 13:11

본문

728x90

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

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

간단하게 생각해서 0으로 나와있는 번호는 두가지로 다맞추거나 다 틀리거나로 나누어 

등수를 매기면 되겠다 생각해서 맞추는 번호를 딕셔너리로 만들어 맞추어 등수를 표기해 주었다.

def solution(lottos, win_nums):
    answer = []

    cnt = 0
    winning_Rank={
        6: 1,
        5: 2,
        4: 3,
        3: 4,
        2: 5,  
        1: 6,
        0: 6
    }
    answer = []
    for lotto in lottos:
        if lotto != 0:
            if lotto in win_nums:
                cnt += 1

    if lottos.count(0) != 0:
        answer.append(winning_Rank[cnt+lottos.count(0)])
        answer.append(winning_Rank[cnt])
    elif lottos.count(0) == 6:
        answer = [1,6]
    else :
        answer.append(winning_Rank[cnt])
        answer.append(winning_Rank[cnt])
    return answer

다른사람 풀이를 보니 등수를 리스트로 만들어 인덱스로 들어오도록 만들어 더 깔끔하게 만들어 주었다. 

숫자가 연속되는 경우 이런식으로 사용해야겠다는 생각이 들었다. 

def solution(lottos, win_nums):

    rank=[6,6,5,4,3,2,1]

    cnt_0 = lottos.count(0)
    ans = 0
    for x in win_nums:
        if x in lottos:
            ans += 1
    return rank[cnt_0 + ans],rank[ans]

문제풀이 후

-  문제를 쉽게 풀려고 하다가 더 늦게 될 수 있으니 그래도 길더라도 풀어보자

'coding > coding_test' 카테고리의 다른 글

[coding_test]더 맵게  (0) 2021.05.24
[coding_test]음양 더하기  (0) 2021.05.20
리눅스 마스터 2급 문제(21~30)  (0) 2021.05.13
[coding_test]오픈채팅방  (0) 2021.05.13
[coding_test]멀쩡한 사각형  (0) 2021.05.12

관련글 더보기