코린이의 개발 일지

[파이썬 코테 문제] 로또의 최고 순위와 최저 순위 - 2021 본문

파이썬 코딩테스트 연습

[파이썬 코테 문제] 로또의 최고 순위와 최저 순위 - 2021

폴라민 2022. 1. 9. 22:31
반응형

안녕하세요. 이번에도 코테 문제를 들고 온 폴라민 입니다.

 

이번에도 마찬가지로 문제의 해답이 나와있으니 아직 풀어보지 않으신 분들은 아래의 사이트에 가서 문제를 풀어본 후 오시길 바랍니다.

 

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

이번 문제는 비교적 간단한 문제였습니다. 제가 짠 코드부터 볼까요?

 

def solution(lottos, win_nums):
    zero=lottos.count(0)
    correct_num=0
    for num in lottos:
        if num in win_nums:
            correct_num+=1
    top=7-(zero+correct_num)
    low=7-correct_num
    if top==7:
        top=6
    if low==7:
        low=6
    answer = [top,low]
    return answer

코드를 간략히 설명드리면

먼저 lottos 숫자 배열에서 0의 개수를 세어 zero 변수에 저장해 두고

그 다음 맞춘 숫자 correct_num을 세어줍니다. 

lottos 배열에 있는 숫자들을 하나씩 가지고 와서 숫자가 win_nums에 있는지 확인 하면 되겠죠?

 

이렇게 수를 다 세었으면 순위를 계산해 줍니다. 

가장 많이 맞추었을 경우는 0인 경우를 전부 맞췄다고 가정했을 때 일거고 

가장 적게 맞추었을 때에는 0인 경우를 전부 틀렸다고 가정했을 때 일겁니다.

 

그렇게 계산해준 등수를 리스트 자료형으로 리턴해주면 끝이 납니다.

 

조금 더 간단한 방법을 살펴 볼까요?

 

def solution(lottos, win_nums):
    rank=[6,6,5,4,3,2,1]
    zero=lottos.count(0)
    correct_num=0
    for num in lottos:
        if num in win_nums:
            correct_num+=1
    top=rank[zero+correct_num]
    low=rank[correct_num]
    answer = [top,low]
    return answer

별건 없고 rank라는 리스트를 따로 만들어 주어 0개 맞췄을 경우 순위가 7등이니 처음 코드에서는 그 부분을 조건문으로 처리 해주었었는데

위와 같이 해주면 코드가 조금더 간결해지겠죠?

 

이상 가볍게 풀어볼 수 있는 코테 문제였습니다.

다음 포스팅에서 만나요~ 안녕!!

반응형
Comments