[프로그래머스] 코딩테스트 Lv1 2023 카카오 - 개인 정보 수집 유효기간 [Python]

원준·2023년 5월 4일
0

코딩 테스트

목록 보기
18/18

1. 문제 설명

2. 내가 한 코드

def solution(today, terms, privacies):
    answer = []
    today = list(map(int, today.split('.')))
    #today에 받은 String 날짜를 list로 나누면서 int로 변환하여 만든다.
    
    term = {}
    for s in terms: #유효기간에 띠른 종류를 dic 형태로 변환하여 넣는다.
        sp = s.split(' ')
        term[sp[0]] = int(sp[1])
    
    for i in range(len(privacies)): 
    # 해당 날짜들을 하나씩 비교하기 위해 for문
        p = privacies[i].split(' ') 
        # 띄어쓰기를 기준으로 날짜와 유효기간 종류를 나눈다.
        date = list(map(int, p[0].split('.'))) 
        # String 날짜를 비교하기 쉽게 나눠서 int로 변환 후 list에 넣는다.
        date[1] += term[p[1]]
        # 해당 유효기간 종류에 따라 날짜 month부분에 넣는다.
        while date[1] > 12:
        # 날짜가 12월이 넘어간다면, 12를 빼면서 1년씩 더한다.
            date[1] -= 12
            date[0] += 1
        if date[0] < today[0]: # 날짜 비교 if문들
            answer.append(i+1)
        elif date[0] == today[0]:
            if date[1] < today[1]:
                answer.append(i+1)
            elif date[1] == today[1]:
                if date[2] <= today[2]:
                    answer.append(i+1)
    return answer

3. 느낌 점

  • 어렵지는 않았지만, 가독성이 떨어진다.
  • 속도도 나쁘지 않았지만, 차이성이 나온것을 확인했을때 더 좋은 코드가 있다.
  • 최적화를 위해 좀더 신경을 써야 겟다고 생각한다.
profile
공부해보자

0개의 댓글