본문 바로가기

Coding test

99클럽 코테 스터디 39일차 TIL, 프로그래머스 / 로또의 최고 순위와 최저 순위

🔑 오늘의 학습 키워드 : 그리디

🔗 문제링크 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

✅ 오늘의 회고

- 고수가 된 기분 :)

 



#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL