https://programmers.co.kr/learn/courses/30/lessons/77484
로또의 순위를 매겨주는 rank함수를 만들어서 해결하였다.
def rank(value):
if value == 6: return 1
elif value == 5: return 2
elif value == 4: return 3
elif value == 3: return 4
elif value == 2: return 5
else: return 6
def solution(lottos, win_nums):
result=[0,0]
for i in lottos:
if i in win_nums: result[1]+=1; result[0] +=1
if i == 0: result[0] += 1
return [rank(i) for i in result]
lottos와 win_nums가 일치하는 원소의 수에 따라 랭크를 부여하는 rank함수를 따로 생성하였고, list comprehension을 통해 순위 리스트를 반환하는 함수를 작성하였다.
상당히 직관적으로 문제를 풀어서 코드의 길이가 길어졌다.
이 방법 외에 추천수를 가장 많이 받은 코드에선 rank를 매기기 위해 [6,6,5,4,3,2,1] 와 같이 두 배열의 일치 수를 값으로 하는 rank 리스트를 생성하고, 일치 수가 해당 리스트에 존재하는 위치를 받아오는 방식을 택했다.
이와 같은 방식으로 하면 코드가 더욱 간결하고 메모리도 적게 사용할 수 있다.
'python > 알고리즘 문제풀이' 카테고리의 다른 글
시간복잡도/ BigO표기법 (0) | 2021.06.24 |
---|---|
[프로그래머스 | 파이썬3] 키패드 누르기 (1) | 2021.05.21 |
[프로그래머스 | 파이썬3] 크레인 인형뽑기 게임 (1) | 2021.05.19 |
[프로그래머스 | 파이썬3] 신규 아이디 추천_정규표현식, strip활용 (1) | 2021.05.18 |
[프로그래머스 | 파이썬3] 내적_sum함수 활용 (1) | 2021.05.18 |