유형 : 구현

풀이 시간 : 25분, 인터넷 검색 

def solution(today, terms, privacies):
    today = today.split(".")
    today = [int(x) for x in today]
    answer = []
    
    termdict = dict([t.split(" ") for t in terms])
    privlist = [x.split(" ") for x in privacies]
    
    date = [y[0].split(".") for y in privlist]
    tm = [y[1] for y in privlist]
    for i in range(len(tm)):
        date[i][0] = int(date[i][0])
        date[i][1] = int(date[i][1]) + int(termdict[tm[i]])
        date[i][2] = int(date[i][2]) - 1
        if date[i][2] < 1:
            date[i][2] += 28
            date[i][1] -= 1
        if date[i][1] > 12:
            date[i][0] += date[i][1] // 12
            date[i][1] = date[i][1] % 12
            if date[i][1] == 0:
                date[i][0] -= 1
                date[i][1] += 12
    for i in range(len(date)):
        if date[i][0] < today[0]:
            answer.append(i+1)
        elif date[i][0] == today[0] and date[i][1] < today[1]:
            answer.append(i+1)
        elif date[i][0] == today[0] and date[i][1] == today[1] and date[i][2] < today[2]:
            answer.append(i+1)  
    return answer

 

진짜 이게 뭐지.......

 

        if date[i][1] > 12:
            date[i][0] += date[i][1] // 12
            date[i][1] = date[i][1] % 12
            if date[i][1] == 0:
                date[i][0] -= 1
                date[i][1] += 12

 

이 부분 로직을 빼먹고 구현해서 처음에 다 실패로 나왔음.

단순히 12 이상일 때 12를 뺴거나 하는 것이 아니라 12로 나눈 몫과 나머지를 이용할  것..

그리고 몫과 나머지에서 더 나아가서 만약 몫이, 즉 새로 구한 month가 0인 경우 또한 고려해 주어야 한다. 

'프로그래머스 > Lv. 1' 카테고리의 다른 글

56. 신고 결과 받기  (0) 2024.07.17
54. 성격 유형 검사하기  (0) 2024.07.17
53. 신규 아이디 추천 ★ (isalpha, isdigit)  (0) 2024.07.17
52. 키패드 누르기  (0) 2024.07.17
51. 크레인 인형뽑기 게임  (0) 2024.07.16
복사했습니다!