Scroll indicator done
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/150370

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


이런식으로 년월일 계산하다가 .. 손해봤다 .. 그마져도 틀렸다 ..
그냥 일로 모두 바꿔서 비교가 훨씬 쉽다. 일 수가 28일로 정해져 있기 때문에 !
def solution(today, terms, privacies):
    answer = []
    today = [int(i) for i in today.split(".")]

    term, privacy = {}, {}
    for i in terms:
        term[i.split(" ")[0]] = int(i.split(" ")[1])
    for i in privacies:
        privacy[i.split(" ")[0]] = i.split(" ")[1]

    for j, i in enumerate(privacy):
        tmp = [int(idx) for idx in i.split(".")]
        tmp[1] += term[privacy[i]]
        y = tmp[0]
        m = tmp[1]
        d = tmp[2]-1

        if d > 28:
            m += d // 28
            d = d % 28
        if d == 0:
            m -= 1
            d = 28
            if m == 0:
                y -= 1
                m = 12
        if m > 12:
            y += m // 12
            m = m % 12
            if m == 0:
                m = 12
                y -= 1
                
        if today[0] > y:
            answer.append(j+1)
            continue
        else:
            if today[1] > m:
                answer.append(j+1)
                continue
            else:
                if today[2] > d:
                    answer.append(j+1)
    return answer

< 수정 >

def solution(today, terms, privacies):
    answer = []
    today = [int(i) for i in today.split(".")]
    today_value = (today[0] * 12 * 28) + (today[1] * 28) + today[2]

    term = {}
    for i in terms:
        term[i.split(" ")[0]] = int(i.split(" ")[1]) * 28

    for i in range(len(privacies)):
        x = privacies[i].split(" ")  # x[0] : 날짜, x[1] : 약관 알파벳
        y = [int(j) for j in x[0].split(".")]

        value = (y[0] * 12 * 28) + (y[1] * 28) + term[x[1]] + y[2]
        if today_value >= value:
            answer.append(i+1)

    return answer

 

728x90