1) 문제
클릭▼
2) 코드
('좋아요' 수 제일 많은 풀이)
2) 코드 설명
① rank = [6, 6, 5, 4, 3, 2, 1]
# 로또의 순위는 1등부터 6등까지 있다.
# 여기서 일치하는 개수를 계산하여 그 개수와 맞는 인덱스 값을 출력 하려고 한다.
# rank = [6, 6, 5, 4, 3, 2, 1] 는 rank = [6위, 6위, 5위, 4위, 3위, 2위, 1위] 의미한다.
# 일치하는 개수가 0이면 rank[0] = 6(순위)을 출력하고, 맞은 개수가 6이면 rank[6] = 1(순위)을 출력하게
만들었다.
② cnt_0 = lottos.count(0)
# lottos 안에 0의 개수를 찾아서 cnt_0에 넣는다.
# 0의 개수를 찾는 이유는 알아볼 수 없는 번호가 '0' 이기 때문에 최고 순위를 구할때 '0'이 모두 win_nums의 숫자 중 하나라고 생각하고 0의 개수를 구한 다음 그것을 lottos와 win_nums의 일치하는 숫자의 개수에
더해줘서 최고 순위를 구한다.
# count() 함수는 문자열 안에서 찾고 싶은 문자의 개수를 찾아주는 함수이다.
# 예를들어 lottos.count(0) 이렇게 출력하면 lottos 안에 0이 몇개인지 찾아준다.
# lottos 안에 0이 2개가 있으므로↓ 2개가 출력되는 걸 확인할 수 있다.
③ ans = 0
# 맞은 개수를 담을 ans 변수를 만들고 먼저 0으로 초기화 시킨다
④ for x in win_nums: if x in lottos: ans += 1
# win_nums 안의 요소를 하나씩 뽑아 x 넣고 만약 x가 lottos 안에 있으면 ans에 1씩 더해준다.
⑤ return rank[cnt_0 + ans],rank[ans]
# 결과로 최고 순위와 최저 순위를 출력해야 한다.
# 최고 순위 rank[cnt_0 + ans] = rank[0의 개수 + ans의 값]을 의미.
# 최저 순위 rank[ans] = rank[ans의 값]을 의미.
# ↑위와같이 cnt_0 = 2, ans = 2 이므로 최고 순위 rank[2+2] = rank[4], 최저 순위 rank[2]가 된다.
# rank[4] = 3, rank[2] = 5 이므로 답은 (3, 5)이다.
# 다른 예로 lottos = [0, 0, 0, 0, 0, 0] 와 win_nums = [38, 19, 20, 40, 15, 25] 넣어서 출력하면
# cnt_0 = 6, ans = 0 이므로 최고 순위는 rank[6+0] = rank[6], 최저 순위는 rank[0] 이고 답은 (1, 6) 이다.
'코딩 연습' 카테고리의 다른 글
[프로그래머스] 체육복 (python) (0) | 2022.05.10 |
---|---|
[카카오] 1차 다트 게임 (python) (0) | 2022.05.04 |
[프로그래머스] 내적 (python) (0) | 2022.04.28 |
[카카오] 크레인 인형 뽑기 게임(python) (0) | 2022.04.25 |
[카카오] 신고 결과 받기(python) (0) | 2022.04.18 |