코딩테스트
[코딩테스트][프로그래머스] 로또의 최고 순위와 최저 순위
탱!
2022. 6. 10. 14:50
https://programmers.co.kr/learn/courses/30/lessons/77484
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호
programmers.co.kr
ㅋㅋㅋㅋㅋ
내가 주구절절 쓴 코드와 남이 5줄안에 쓴 코드를 보고있자니 웃음이 나온다.
우야거나 말거나
내 코드도 해보고 저 코드도 해보자
먼저 복잡해보이는 내 코드
def solution(lottos, win_nums):
answer = []
match = []
unknown = []
for i in lottos :
if i == 0 :
unknown.append(i)
else :
if i in win_nums :
match.append(i)
if len(unknown) == 6:
highest = 1
lowest = 6
elif len(unknown) > 0 and len(unknown) <6 :
if match == [] :
highest = 7 - len(unknown)
lowest = 6
else :
highest = 7 - (len(unknown)+len(match))
lowest = 7- len(match)
elif len(unknown) == 0 :
if match == []:
highest = 6
lowest = 6
else :
highest = 7-len(match)
lowest = highest
answer.append(highest)
answer.append(lowest)
return answer
나는 포함된 수를 구하기 보다 빈 리스트를 만들어서 리스트 갯수를 세는 방법을 사용했다.
이건 count()함수를 사용하는걸 까먹었기 때문에 간단한 함수 명령어 하나를 길게 늘어쓰게 된 것이다.
여기서 count()을 까먹은 댓가로
중첩 if 조건문까지 이용해서 직접 지역변수에 값을 구해서 리스트에 포함하는 결괏값을 만들었다.
남이 쓴 코드를 보면
win_nums 에 포함된 lottos의 개수 (1번)와 0이 포함된 개수(2번)를 더한 값을 구하면
가장 많이 맞는 갯수가 (1번+2번)고 가장 적게 맏을 갯수는 (1번)이다.