[python_파이썬_2021 Dev-Matching: 웹 백엔드 개발자(상반기)]프로그래머스_LV1_로또의 최고 순위와 최저 순위_풀이
2024. 5. 31. 12:42ㆍ코드리뷰
728x90
반응형
공부하는허딩크 : https://www.youtube.com/live/7MBqIbjFSrs?feature=shared
24년 5월 31일 회사 점심시간을 활용해 문제 풀고, 6월 19일에 리뷰.
문제는 길어서 긴장했으나 맥락을 파악해서 이해하면 한방에 통과 가능
<첫번째 시도 : 맞았습니다.>
중요 포인트는 지워진 숫자를 0으로 체크한 부분이다.
이 부분이 다 맞을 경우와 다 맞지 않을 경우의 케이스로 구분하면 된다.
즉, 살아있는 번호를 로또 번호와 매칭해서 += 1로 카운트를 해주고, match + p, match 이렇게 2가지의 케이스로
반복문을 돌려서 답이 나왔다.
#문제가 길어서 읽기 싫지만 잘 읽어본다
#즉 동일한 숫자의 개수 + 0의 개수(0이 다 맞다고 추정) : 최고 순위
# 동일한 숫자의 개수 : 최저 순위
def solution(lottos, win_nums):
answer = []
p = lottos.count(0)
match = 0
for i in lottos:
if i in win_nums:
match += 1
for i in [match + p, match]:
if i == 6:
answer.append(1)
elif i == 5:
answer.append(2)
elif i == 4:
answer.append(3)
elif i == 3:
answer.append(4)
elif i == 2:
answer.append(5)
else:
answer.append(6)
<다른사람 풀이 참고>
1. 내가 작성한 코드처럼 if문으로 구성하지 않고 리스트로 구분 할 수 있음
rank = [6, 6, 5, 4, 3, 2, 1] 이렇게 하면 인덱스와 당첨 내용이 일치됨.
가독성 및 효율적임.
def solution(lottos, win_nums):
rank = [6, 6, 5, 4, 3, 2, 1]
p = lottos.count(0)
match = 0
for i in lottos:
if i in win_nums:
match += 1
return [rank[match + p], rank[match]]
2. 교집합을 활용할 수도 있음 : 이거는 좀 신박함.
def solution(lottos, win_nums):
rank = {
0: 6,
1: 6,
2: 5,
3: 4,
4: 3,
5: 2,
6: 1
}
return [rank[len(set(lottos) & set(win_nums)) + lottos.count(0)], rank[len(set(lottos) & set(win_nums))]]
728x90
반응형
'코드리뷰' 카테고리의 다른 글
[python_파이썬_2020 카카오 인턴십]프로그래머스_LV1_키패드 누르기_풀이 (0) | 2024.06.19 |
---|---|
[python_파이썬_2021 KAKAO BLIND RECRUITENT]프로그래머스_LV1_신규 아이디 추천_풀이_★컴프리헨션 (0) | 2024.06.18 |
★[python_파이썬_2022 KAKAO TECH INTERNSHIP]프로그래머스_LV1_성격 유형 검사하기_풀이 (0) | 2024.05.29 |
[파이썬&python]프로그래머스_LV1_카드 뭉치_풀이 (0) | 2024.05.28 |
[파이썬&python_pass]프로그래머스_LV1_추억 점수_풀이 (0) | 2024.05.28 |