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
'코딩테스트 준비' 카테고리의 다른 글
코딩테스트 일일학습 (11/06) 01. 성격 유형 검사하기(lv.1) (0) | 2023.11.07 |
---|