코딩테스트 준비

코딩테스트 일일학습(11/06) 02. 개인정보 수집 유효기간(lv.1)

자라나는지수새싹 2023. 11. 7. 00:26

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

 

프로그래머스

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

programmers.co.kr

 

<문제>

 

<제한 사항>

 

<입출력 예>

 

 

<코드 구현>

def solution(today, terms, privacies):
    answer = []
    # 오늘 날짜를 .으로 분리하여 [년, 월, 일] 형태의 리스트가 되도록 만들기
    today = today.split('.')
    # 각 term에 들어간 항목들을 띄어쓰기를 구분으로 [term종류, 기간] 으로 만들기
    for i in range(len(terms)):
        terms[i] = terms[i].split(' ')
    # 각 privacies 항목들을 띄어쓰기를 구분으로 [날짜, term종류]로 나누고,
    # 날짜를 .으로 분리하여 [년, 월, 일] 형태의 리스트가 되도록 만들기
    for i in range(len(privacies)):
        privacies[i] = privacies[i].split(' ')
        privacies[i][0] = privacies[i][0].split('.')
    
    # 여기에서는 계산하기 쉽도록 매월은 모두 28일까지 있다고 가정한다고 하였으므로,
    # 각 날짜를 기준일(2000년 01월 01일)로부터의 지난 날짜로 정의하자.
    for i in range(len(privacies)):
    	# to_day는 비교하려는 날짜를 저장
        to_day = ((int(today[0]) - 2000) * 28 * 12) + ((int(today[1]) - 1) * 28) + (int(today[2]) - 1)
        # that_day는 해당 계약에 동의한 날짜를 저장
        that_day = ((int(privacies[i][0][0]) - 2000) * 28 * 12) + ((int(privacies[i][0][1]) - 1) * 28) + (int(privacies[i][0][2]) - 1)
        # 두 날짜의 차이가 diff에 저장
        diff = to_day - that_day
        for j in range(len(terms)):
        	# privacies의 계약이 terms 테이블로부터 몇 개월되는 계약인지 찾아, 개월수*28을 diff와 비교
            if privacies[i][1] == terms[j][0]:
                term = int(terms[j][1]) * 28
        if diff >= term:
            answer.append(i + 1)
    return answer