https://programmers.co.kr/learn/courses/30/lessons/77484
로또를 사 왔는데 동생이 로또에 낙서를 해둔 것. 자신의 최저 순위와 최고 순위를 알아보고 싶다.
낙서로 알아볼 수 없는 수는 0으로 나타낸다. 6개 다 맞추면 1등, 하나도 못 맞추거나 하나 맞추면 6등.
ex) 내가 고른 수 : 1 4 7 0 0 19 (숫자가 정렬돼있지 않을 수 있다.)
로또 번호 : 1 3 8 19 20 25
-> 맞춘 갯수 : 2개 => 최저 5등, 최고 3등
def solution(lottos, win_nums):
Sum = 0
zero = 0
for i in lottos:
if(i==0):
zero+=1
continue
for j in win_nums:
if(i==j):
Sum+=1
answer = []
if(Sum==0):
answer.append(6)
if(zero==0):
answer.insert(0,6)
else:
answer.insert(0,7-zero)
return answer
answer.append(7-Sum)
answer.insert(0, 7-Sum-zero)
return answer
코드 설명 : for문을 돌며 0의 갯수를 세고, 당첨 번호와 같은 갯수가 몇개인지 셌다.
그리고 예외를 고려해줘가며 return 할 answer 배열에 추가해줌.
프로그래머스를 처음 사용해보는데 문제를 풀고나면 잘 푼 코드를 보여준다.
보고나니 내 코드가 정말 지저분해 보이는 마법.
def solution(lottos, win_nums):
same = 0
zero = lottos.count(0)
rank = [6, 6, 5, 4, 3, 2, 1]
for i in lottos:
for j in win_nums:
if(i==j):
same+=1
return rank[same+zero],rank[same]
위에서 고민한대로 다시 코드를 작성해봤다.
그리고 다시 잘 쓴 코드를 봤다. for j in win_nums: if ~~ : same+=1 부분을
if i in win_nums: same+=1 이렇게 작성했다.
와우 코테 공부가 아니라 파이썬 공부를 해야겠네.