Coding test
99클럽 코테 스터디 39일차 TIL, 프로그래머스 / 로또의 최고 순위와 최저 순위
코드짜는쿤스트
2024. 8. 29. 11:18
🔑 오늘의 학습 키워드 : 그리디
🔗 문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/77484
def solution(lottos, win_nums):
cnt,zero = 0,0
for lotto in lottos:
if lotto in set(win_nums) : cnt += 1
elif lotto == 0 : zero += 1
return [6 if -cnt-zero == 0 else 7 - cnt-zero,6 if cnt == 0 else 7-cnt]
🗒️ 공부한 내용 본인의 언어로 정리하기
🤔 문제를 보고 든 생각
쉽다
⏰ 예상 시간 복잡도 O(N)
제한 사항
lottos는 길이 6인 정수 배열입니다.
lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
0은 알아볼 수 없는 숫자를 의미합니다.
0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
win_nums은 길이 6인 정수 배열입니다.
win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
😎 알고리즘 개요
1. 0이아닌 숫자가 있는지 찾음 -> 맞춘 횟수 올려줌
2. 숫자가 0 -> 답에 반영될 예정
옛날 풀이 ( 초보 티가 난다 )
def ranking(n):
if n == 6 :
rank = 1
elif n == 5 :
rank = 2
elif n == 4 :
rank = 3
elif n == 3 :
rank = 4
elif n == 2 :
rank = 5
else : rank = 6
return rank
def solution(lottos, win_nums):
cnt = 0
plusminus = 0
for i in range(6):
for j in range(6):
if lottos[i] == win_nums[j]:
cnt += 1
if lottos[i] == 0 :
plusminus += 1
maxans = ranking(cnt + plusminus)
minans = ranking(cnt)
answer = [maxans,minans]
return answer
✅ 오늘의 회고
- 고수가 된 기분 :)