Programmers/Lv1

[프로그래머스] 개인정보 수집 유효기간 (Lv1) / 2023 카카오 블라인드 채용

hellosonic 2023. 6. 16. 16:30

문제요약

나의 코드 및 설명

  • 오늘 날짜를 일자로 환산하여 저장해두고, 약관에 따라 개인정보 수집 유효기간이 끝나는 날짜를 환산한 값과 비교하여 유효기간이 만료되었는지를 확인한다.
  • 약관 종류에 따른 유효기간은 딕셔너리를 활용하여 저장한다.
def solution(today, terms, privacies):
    answer = []
    today = today.split(".") #문자열 형태임(오늘날짜)
    today_day = int(today[0])*28*12 + int(today[1])*28 + int(today[2]) #날짜를 일수로 변환
        
    #약관 종류 : 유효기간 -> 딕셔너리 저장
    d = {}
    for term in terms:
        term = term.split()
        d[term[0]] = int(term[1])
        
    for i in range(len(privacies)):
        temp = privacies[i].split() #["2021.05.02", "A"]
        date = temp[0].split(".") #["2021", "05", "02"]
        case = temp[1] #약관 유형
        date_day = int(date[0])*28*12 + int(date[1])*28 + int(date[2]) + d[case] * 28
        if date_day <= today_day:
            answer.append(i+1)
    
    return answer

피드백

이번 문제도 복잡해보였는데 날짜를 일자로 환산하는 아이디어를 떠올려서 비교적 간단하게 문제를 해결할 수 있었다. 또, 이전에string.split("문자") 을 통해 특정 문자를 기준으로 문자열을 나누는 코드를 배웠는데 매우 유용하게 사용하고 있다. 여러 기업, 사이트의 코딩테스트 대비 문제를 풀어보는 것이 참 중요한 것 같다. 백준에는 백준에서 자주 쓰는 함수, 알고리즘이 있고, 프로그래머스에는 프로그래머스에서 자주 쓰는 함수, 알고리즘이 있듯이 각 기업, 사이트마다 주로 쓰이는 함수나 알고리즘이 있어서 최대한 다양한 환경에서 다양한 경험을 해야겠다.