본문 바로가기
프로그래머스/Python

[프로그래머스] 로또의 최고 순위와 최저 순위 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 16.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 일치하는 번호의 개수와 0의 개수를 각각 구한 뒤, 0이 모두 당첨 번호일 때 최고 순위가 되고 0이 모두 당첨 번호가 아닐 때 최저 순위가 되는 것을 활용하여 해결한다.

 

  1. 0의 개수를 저장할 변수를 생성하고 초기화한다. zero = 0
  2. 0을 제외하고 일치하는 숫자의 개수를 저장할 변수를 생성하고 초기화한다. count = 0
  3. 구매한 로또의 번호를 하나씩 추출하며 for i in lottos
  4. 만약 추출한 번호가 0이면 0의 개수를 1 증가시킨다. if (i == 0): zero += 1
  5. 만약 추출한 번호가 당첨 번호에 있으면 일치하는 숫자의 개수를 1 증가시킨다. if (i in win_nums): count += 1
  6. 최고 순위는 0이 모두 당첨 번호일 경우이므로 총 일치하는 번호의 개수를 7에서 빼준 값이 최고 순위인데, 만약 일치하는 번호가 0개이면 계산 결과 7이므로 6위를 넘어간다.
  7. 하여 계산 결과와 6 중 더 작은 값을 순위로 추가한다. answer.append(min(7 - (count + zero), 6))
  8. 최저 순위는 0이 모두 당첨 번호가 아닐 경우이므로 그냥 일치하는 번호의 개수를 7에서 빼준 값인데, 위 코드와 마찬가지로 계산 결과가 7이 나올 수 있기 때문에 6과 비교하여 더 작은 값을 순위로 추가한다. answer.append(min(7 - count, 6))
반응형

3. 소스코드

def solution(lottos, win_nums):
    answer = []
    
    zero = 0
    count = 0
    for i in lottos:
        if (i == 0):
            zero += 1
            
        if (i in win_nums):
            count += 1

    answer.append(min(7 - (count + zero), 6))
    answer.append(min(7 - count, 6))
    
    return answer
728x90
반응형