728x90
문제
정답
def solution(today, terms, privacies):
answer = []
alpha = []
month = []
#문자로 되어있는 날짜를 숫자로 변경했습니다.
todayA = [int(today[0:4]), int(today[5:7]), int(today[8:10])]
# terms에 있는 문자와 숫자를 나누어주었습니다.
for i in range(0, len(terms)):
if len(terms[i]) == 3:
alpha.append(terms[i][0])
month.append(int(terms[i][2]))
else:
strs = ""
alpha.append(terms[i][0])
atrs = terms[i][2:]
month.append(int(atrs))
for i in range(0, len(privacies)):
#문자로 되어있는 날짜를 숫자로 변경했습니다.
pday = [int(privacies[i][0:4]), int(privacies[i][5:7]), int(privacies[i][8:10])]
# privacies에서 약관 종류를 전에 저장한 alpha와 비교하여 월에 약관의 유효기간을 더해주었습니다.
for j in range(0, len(alpha)):
if privacies[i][11] == alpha[j]:
pday[1] += month[j]
# 월을 더했을 경우 12보다 크면 년도를 올려주도록 하였습니다.
if pday[1] > 12:
pday[0] += pday[1] // 12
if pday[1] % 12 == 0:
pday[0] -= 1
pday[1] = 12
else:
pday[1] = pday[1] % 12
# 조건에 맞도록 약관이 지났으면 answer에 추가하였습니다.
if pday[0] < todayA[0]:
answer.append(i+1)
elif pday[0] == todayA[0]:
if pday[1] < todayA[1]:
answer.append(i+1)
elif pday[1] == todayA[1]:
if pday[2] <= todayA[2]:
answer.append(i+1)
return answer
계산을 조금 쉽게 하기 위해 모든 날짜 문자에서 숫자로 바꾸었습니다. 그 뒤에 약관의 종류와 유효기간을 alpha(약관의 종류)와 month(유효기간)에 저장하였습니다.
그 다음 privacies에서 약관의 종류가 같은것을 찾아 유효기간을 더해준 뒤 pday[1](월)이 12보다 크면 pday[0](년)이 증가하도록 조건문을 작성하였습니다.
마지막으로 약관의 유효기간이 지난 것들을 골라 answer에 추가하여 문제를 풀었습니다.
728x90
'프로그래머스 코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] 바탕화면 정리 Python (0) | 2024.07.10 |
---|---|
[프로그래머스] 성격 유형 검사하기 Python (0) | 2024.07.09 |
[프로그래머스] 햄버거 만들기 Python (0) | 2024.07.09 |
[프로그래머스] 둘만의 암호 Python (0) | 2024.07.08 |
[프로그래머스] 대충 만든 자판 Python (0) | 2024.07.05 |