1. 구해야 하는 것
최저 등수와 최고 등수
2. 1을 구하기 위해 필요한 것
확정으로 맞은 번호들을 빼고 나면, 남은 갯수 + 1이 최저 등수
맞은 번호를 빼는 법
remove? del? pop?
리스트 컴프리헨션으로 다른 번호만 넣어준다.
거기서 0의 개수를 더 빼주면 최고 등수
3. 그 외 고려해야 할 사항
7등은 없으므로 min(6, 나온 값)으로 최대 6등까지 나오게 한다.
remove를 사용한 코드, 당첨 번호에서 lottos와 공통으로 들어간 번호들을 지워준 뒤,
len(lottos)+1로 최저 등수, 거기서 lottos의 원소들 중 0의 개수를 더 빼주면 최고 등수가 된다.
def solution(lottos, win_nums):
for i in win_nums:
if i in lottos:
lottos.remove(i)
return [min(len(lottos) - lottos.count(0) + 1), min(6, len(lottos)+1)]
리스트 컴프리헨션을 이용한 방법.
remove로 지워주는게 아니라 처음부터 일치하지 않는 번호만 담은 리스트를 만든 뒤,
위 코드과 같은 방식으로 최고 등수와 최저 등수를 구해준다.
def solution(lottos, win_nums):
a = [i for i in lottos if i not in win_nums]
return [min(6, len(a)-a.count(0)+1), min(6, len(a)+1)]
'코딩 테스트 연습' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 카드 뭉치 (0) | 2023.06.18 |
---|---|
[알고리즘] 프로그래머스 - 피로도 (0) | 2023.06.05 |
20230530 TIL - 알고리즘 (0) | 2023.06.01 |
[알고리즘] 프로그래머스 - 행렬의 곱셈 (0) | 2023.06.01 |
[알고리즘] 프로그래머스 - 대충 만든 자판 (0) | 2023.06.01 |
댓글