Data Analyst KIM

[프로그래머스Lv.1] 로또의 최고 순위와 최저 순위(파이썬) 본문

데이터 분석/Coding Test

[프로그래머스Lv.1] 로또의 최고 순위와 최저 순위(파이썬)

김두연 2023. 6. 12. 15:16
반응형

 

<최종코드>

def solution(lottos, win_nums):
    answer = []                   # 0이 아닌 값을 저장할 공간
    result = 0                    # 순위를 부여하기 위해 만듬
    for i in lottos :
        for v in win_nums :
            if i == v :
                answer.append(i)  # 0이 아닌 값을 answer에 저장 
    if len(answer) ==  0 :        # answer에 길이에 따라
        result = 6                # 순위 부여 
    elif len(answer) == 1 :
        result = 6 
    elif len(answer) == 2 :
        result = 5
    elif len(answer) == 3 :
        result = 4
    elif len(answer) == 4 :
        result = 3
    elif len(answer) == 5 :
        result = 2
    elif len(answer) == 6 :
        result = 1 
    
    plus = lottos.count(0)            # lottos의 0의 개수
    if len(set(lottos)) == 1 :        # lottos가 모두 같으면 
        return [result-plus+1,result] # [1,6]을 반환
    else :
        if plus == 0 :                # 0의 개수가 없다면
            return [result,result]    # [1,1]처럼 반환 => 0이 없으면 [1,2]와 같은 경우가 생기지 않음
        else :                        
            return [result-plus,result] # 0이 1,2,3,4,5개인 경우에는 [result-plus,result]사용

 

<1개가 오류 났었던 코드> => 이 코드에서 약간 수정해서 오류를 찾아서 위에 코드를 작성해서 해결함 

def solution(lottos, win_nums):
    answer = []
    result = 0
    for i in lottos :
        for v in win_nums :
            if i == v :
                answer.append(i)
    if len(answer) == 1 or 0 :
        result = 6
    elif len(answer) == 2 :
        result = 5
    elif len(answer) == 3 :
        result = 4
    elif len(answer) == 4 :
        result = 3
    elif len(answer) == 5 :
        result = 2
    elif len(answer) == 6 :
        result = 1
    
    plus = lottos.count(0)
    if len(set(lottos)) == 1 :
        return [result+1,result+6]
    else :
        if plus == 0 :
            return [result,result]
        else :
            return [result-plus,result]

# 테스트 1개 틀림

 

반응형