# 일부 지워진 로또번호를 보고 최고순위와 최저순위를 맞추기
# 알아볼 수 없는 번호는 0으로 표기
def solution(lottos, win_nums):
answer = [7] * 2
for i in lottos:
if i in win_nums:
answer[0] -= 1
answer[1] -= 1
con = lottos.count(0)
answer[0] -= con
if answer[1] > 6:
answer[1] = 6
if answer[0] > 6:
answer[0] = 6
# [최고, 최저]
return answer
solution([44, 1, 0, 0, 31, 25], [31, 10, 45, 1, 6, 19])
개발 스토리
문제를 이해하고 풀기 시작했을때 리턴 등수를 보고 배열의 값을 0부터 시작하는 것이 아니라 반대로 시작해야겠다고 생각했다. 배열을 돌며 있는지 체크하고 있으면 값을 각각 빼고 다빼고 나면 0숫자를 카운트해서 0번째 배열에 -값을 준다. 이렇게 하고 다풀고 끝난줄알았는데 다시보니 예외처리가 잘되지 않아서 다시 해주니 통과했다.
def solution(lottos, win_nums):
rank=[6,6,5,4,3,2,1]
cnt_0 = lottos.count(0)
ans = 0 # 이걸 인덱스번호로 활용함
for x in win_nums:
if x in lottos:
ans += 1
return rank[cnt_0 + ans],rank[ans]
다른분들 풀이
다른분들 푼걸 봤더니 아주 특이하게 풀었다. 나는 접근을 각각 빼면서 접근하고 아예없을경우 예외 처리를 해주면서 풀었는데 여기는 등수에 더 주목했다. 등수를 우선 배열로 만들고 찾았을때 배열 번호를 더해주었다. 그리고 마지막에 배열 인덱스 값을 대입해서 리턴해서 마무리했다.
'코딩 알고리즘_코드정리 > PYTHON' 카테고리의 다른 글
파이썬[코딩테스트] - 크레인 인형뽑기 (0) | 2022.04.26 |
---|---|
파이썬[코딩테스트] - 키패드 누르기 (0) | 2022.04.26 |
파이썬[코딩테스트] - 숫자 문자열과 영단어 (0) | 2022.04.20 |
파이썬[코딩테스트] - 신규아이디 추천 (0) | 2022.04.19 |
파이썬[코딩테스트] - 신고 결과 받기 (0) | 2022.04.18 |