반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 코딩테스트
- 자바
- boj
- 급등 이유
- 급등주 분석
- 손에 잡히는 경제 요약
- 경제뉴스 요약
- 손에 잡히는 경제
- 백준
- 주식 분석
- 프로그래머스
- 경제뉴스
- 손경제 요약
- 테마주
- 이진우
- 손경제
- 주식
- 상한가
- 급등주
- 이진우의 손에 잡히는 경제
- 상한가 이유
- Programmers
- 상한가 분석
- Python
- 경제
- 알고리즘
- 파이썬
- 코테
- 주식 상한가
- java
Archives
- Today
- Total
Completion over Perfection
프로그래머스 - 개인정보 수집 유효기간 (파이썬3 Python3) 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/150370
문제가 복잡하게 설명은 되어 있는데 결국 구현해야하는 것은 날짜를 비교하는 로직입니다.
오늘날짜(코드에서 todayYY, todayMM, todayDD로 선언한 변수들)와 약관에 동의한 날짜 + 유효기간(이하 약관기간)을
비교하여 날짜가 같거나 지났으면 파기해야하므로 answer 배열에 넣어줍니다.
그게 아니라면 pass 시켜주면 되고요.
날짜 비교하는 로직은
먼저 년도를 비교해서 오늘의 날짜가 약관기간보다 큰지를 봅니다.
크다면 이미 파기했어야 하는 개인정보이므로 바로 파기하면 됩니다. (정답 배열에 추가해주고 끝)
만약 작다면 기간이 남은거니 패스시키고 년도가 같다면 월을 비교해야겠죠.
월을 비교해서 오늘의 월이 약관기간보다 크다면 이것도 파기되어야 하므로 정답 배열에 넣어줍니다.
월이 같다면 일을 비교해야 합니다.
일을 비교해서 만약 오늘 날짜와 약관기간이 같거나 크다면 이것도 파기대상입니다. 정답 배열에 추가해줍니다.
아니라면 파기대상이 아니므로 패스시킵니다.
def solution(today, terms, privacies):
answer = []
termsDict = {}
for term in terms:
termsDict[term.split(' ')[0]] = term.split(' ')[1]
cnt = 1
for date in privacies:
# print(date)
yy =int(date.split(' ')[0].split('.')[0])
mm = int(date.split(' ')[0].split('.')[1])
dd = int(date.split(' ')[0].split('.')[2])
term = date.split(' ')[1]
termLength = int(termsDict[term])
# 약관동의한 날짜로부터 termLength일 후의 날짜
calculatedDate = dd + (termLength*28)
# print(calculatedDate)
while True:
if calculatedDate > 28:
calculatedDate -= 28
mm += 1
if mm > 12:
mm -= 12
yy += 1
if calculatedDate <= 28:
break
# print(cnt, yy, mm, calculatedDate)
# 약관 동의한 날짜 + 약관 기간
# yy = 2021
# mm = 11
# dd = 2
# 오늘 날짜와 비교
todayYY = int(today.split('.')[0]) # 2022
todayMM = int(today.split('.')[1]) # 05
todayDD = int(today.split('.')[2]) # 19
if todayYY > yy:
answer.append(cnt)
elif todayYY == yy: # 비교 연도가 같다면 월을 비교한다
if todayMM > mm:
answer.append(cnt)
elif todayMM == mm: # 비교 월이 같다면 일을 비교한다
if todayDD > calculatedDate:
answer.append(cnt)
elif todayDD == calculatedDate:
answer.append(cnt)
cnt+=1
# print(answer)
return answer
반응형
'파이썬 (Python)' 카테고리의 다른 글
프로그래머스 - 성격 유형 검사하기 (파이썬3 Python3) (0) | 2023.09.03 |
---|---|
프로그래머스 - 공원 산책 (파이썬3 Python3) (0) | 2023.09.02 |
프로그래머스 - 자연수 뒤집어 배열로 만들기 (파이썬3 Python3) (0) | 2023.08.31 |
프로그래머스 - 자릿수 더하기 (파이썬3 Python3) (0) | 2023.08.30 |
프로그래머스 - 약수의 합 (파이썬3 Python3) (0) | 2023.08.29 |
Comments