[Python] 코딩테스트 연습 >2023 KAKAO BLIND RECRUITMENT > 개인정보 수집 유효기간

2023. 1. 21. 16:25알고리즘

 

넘나 오랜만에..코딩테스트 연습하기

김유민 폭탄 발언....

2개월 동안 코딩테스트 문제 200개 풀거야

아자아잣

암튼 넘나 오랜만이니까 웜업 느낌으로 프로그래머스 레벨 1부터 연습하겠습니다..... ㅠㅠ


코딩테스트 연습 >2023 KAKAO BLIND RECRUITMENT > 개인정보 수집 유효기간

def calc_date(day):
    date = 0
    date += int(day.split('.')[0]) * 12 * 28
    date += int(day.split('.')[1]) * 28
    date += int(day.split('.')[2])
    return date
    
def solution(today, terms, privacies):
    answer = []
    today = calc_date(today)
    t = {i.split()[0] : int(i.split()[1]) * 28 for i in terms}
    
    for i, p in enumerate(privacies):
        date = p.split()[0]
        kind = p.split()[1]
        d = calc_date(date)
        d = d + int(t[kind])
        
        if today >= d:
            answer.append(i + 1)
    
    return answer

- 한달을 28일으로 가정

- today : 오늘 날짜 (format : yyyy.MM.dd)
- terms : 약관의 유효기간 (각 원소 Format : 약관 종류 유효기간)
- privacies : 수집한 개인정보 일자와 약관 종류 (각 원소 Format :   "날짜 약관 종류")

- Return : 개인정보 유효기간이 마감된 (개인정보를 파기해야하는)번호 리턴

 

무사히 통과

하지만 코드가 맘에 안들어서 조금만 개선해보기 위해 고민을 해보기

def calc_date(day):
    date = 0
    date += int(day.split('.')[0]) * 12 * 28
    date += int(day.split('.')[1]) * 28
    date += int(day.split('.')[2])
    return date

이부분을

def calc_date(day):
    y, m, d = map(int, day.split('.'))
    
    return y * 12 * 28 + m * 28 + d

map 함수를 쓰면 좀더 깔끔해질듯 ㅎ

수행시간도 묘하게 깔끔해졌다

 

* Python 함수 잘 활용할 수 있는 방법 공부 & 연습하기