코딩문제풀이/파이썬

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

오늘밤공부 2023. 2. 23. 16:40
반응형

🗓️ 문제 설명

  • 구매한 로또 번호를 담은 배열 lottos와 당첨 번호를 담은 배열 win_nums가 주어집니다.
  • 주어진 lottos 중에서 가려진 숫자는 0으로 표기됩니다.
  • 가려진 숫자로 만들 수 있는 로또의 최고 순위와 최저 순위를 리스트로 담아 반환해주세요.
  • 1위는 6개 번호가 모두 일치하고 순위가 줄어들면 일치하는 번호가 한개씩 줄어듭니다.
  • 제한 사항
    • lottos는 길이 6인 정수 배열입니다.
    • lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
    • lottos에는 0을 제외한 다른 숫자들은 2개 이상 담겨있지 않습니다.
    • lottos의 원소들은 정렬되어 있지 않을수도 있습니다.
    • win_nums는 길이 6인 정수 배열입니다.
    • win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
    • win_nums에는 같은 숫자가 2개 이상 담겨있지 않고, 정렬되어 있지 않을수도 있습니다.
  • 입출력 예시
lottos win_nums result
[44, 1, 0, 0,31 ,25] [31, 10, 45, 1, 6, 19] [3, 5]
[0, 0, 0, 0, 0, 0] [38, 19, 20, 40, 15, 25] [1, 6]
[45, 4, 35, 20, 3, 9] [20, 9, 3, 45, 4, 35] [1, 1]

 

💻 코드

최종 코드

- 수정사항 :
 >> rank를 딕셔너리 자료형으로 변환하여 당첨번호의 갯수만큼 순위를 지정
 >> lottos에 있는 번호 중에 당첨번호가 있으면 correct에 1을 더해주도록 변경

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

- 위 최종 코드 부분에서 if문 2개를 제외를 시킨 코드

풀이 2번

- 위 최종 코드 부분의 count 대신 lottos와 win_nums의 합집합을 사용

 

⚙️ 시행착오

1차 시도

더보기

- 테스트 문제에서 실패
- lottos에 있는 숫자 중에 당첨번호가 없는 경우에 최저 순위가 7이 나오는 문제 발생

 

반응형