본문 바로가기
[스파르타코딩클럽]데이터분석 과정/PYTHON

[Python 코드카타] 52 ~ 54번(프로그래머스)

by doo_ 2024. 1. 22.

52번 콜라 문제

def solution(a, b, n):
    answer = 0
    while n >= a :  # 3) n이 a보다 작을 때까지 반복  
        answer += (n//a)*b # 1)
        n = (n//a)*b + (n&a) # 2)
    return answer

> 다른 풀이 우와.. 👏👏 풀이 이해하기도 어려움..

solution = lambda a, b, n: (n - b) // (a - b) * b
# 1) a개를 주면 b개를 받아서 (a-b)
# 2) 1번 실행할 때, b개를 받아서 n - b (솔직히 이해가 잘 안되는 부분..!)
# 3) 횟수마다 b개씩 받기 때문에 *b

> 오..신박한 답

def solution(a, b, n):
    answer = 0
    while n >= a:
        n -= a
        answer += b
        n += b    
    return answer

53번 명예의 전당 (1)

def solution(k, score):
    answer = []
    a = []
    for i in score:
        if len(a) < k :
            a.append(i)
        elif min(a) <= i:
            a.remove(min(a))
            a.append(i)
        answer.append(min(a))
    return answer

> 다른 답안

def solution(k, score):
    answer = []
    a=[]
    for i in score:
        a.append(i)
        a.sort(reverse=True)
        if len(a)>k:
            del a [-1]
        answer.append(min(a))
    return answer

> heap 알고리즘, 아직 이해를 못해서

pass..

 

54번 2016년

def solution(a, b):
    answer = ''
    #기본 세팅 : days와 months
    days = ['FRI','SAT','SUN','MON','TUE','WED','THU']
    months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    # a-1월까지의 합 + b -> a월 b일
    cnt = (sum(months[:a-1])+b)%7
    # 1월 1일 금요일, 7일 주기, 리스트 0부터 시작
    answer = days[cnt-1]
    return answer

> datetime 라이브러리와 datetime 함수 활용 👏👏

import datetime
def getDayName(a,b):
    t = 'MON TUE WED THU FRI SAT SUN'.split()
    return t[datetime.datetime(2016, a, b).weekday()]