출처 : 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/77484
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호
programmers.co.kr
단순 계산 문제인데 왜인지 오래 걸렸다.
더보기
def solution(lottos, win_nums):
zero = 0
correct = 0
for my_index in range(6):
if lottos[my_index] == 0:
zero += 1
continue
for ans_index in range(6):
if win_nums[ans_index] == lottos[my_index] :
correct += 1
break
hightest = 7 - correct - zero if correct > 1 or zero > 0 else 6
wrongest = 7 - correct if correct > 1 else 6
answer = [hightest, wrongest]
return answer
1. lottos의 성분 1개에 대해 0이라면 zero++, win_nums의 성분 중 같은게 있다면 correct++하고 break
2. 6개가 모두 맞으면 1등(=7-6), 2개만 맞으면 5등(=7-2), 1개와 0개는 6등(else)이므로
가장 높은 등수는 7 - 맞은 개수 + 0의 개수이고, 가장 낮은 등수는 7 - 맞은 개수이다.
3. 이때, 모두 틀리더라도 6등으로 처리해야하므로 맞은 개수 <= 1이면 6으로 지정한다.
4. 3의 조건만 있다면 lottos가 [0, 0, 0, 0, 0, 0]일 경우에도 최고 등수가 6등으로 처리되므로
lottos에 0이 없을 경우에만 6등으로 처리한다. (zero > 0)
'알고리즘 > Python' 카테고리의 다른 글
[python] 프로그래머스 - 전화번호 목록 (0) | 2022.02.05 |
---|---|
[python] 프로그래머스 - 나머지가 1이 되는 수 찾기 (0) | 2022.01.20 |
[python] 백준 2789 - 블랙잭 (0) | 2022.01.07 |
[python] 백준 2447 - 별 찍기 - 10 (0) | 2021.11.23 |
[python] 백준 2292 - 벌집 (0) | 2021.11.22 |