[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 함수 잘 활용할 수 있는 방법 공부 & 연습하기
'알고리즘' 카테고리의 다른 글
[leetCode] 278. First Bad Version 풀이 (0) | 2023.01.24 |
---|---|
[leetcode] Valid Palindrom (0) | 2023.01.24 |
[Stack] leetCode 1944. Number of Visible People in a Queue 풀이 - Python (0) | 2022.08.15 |
2021 카카오 채용연계형 인턴십 > 숫자 문자열과 영단어 (0) | 2022.05.16 |
[코딩테스트] 경쟁적 전염 - 약간 변형 (Python) (0) | 2021.12.30 |