-
[Python] 프로그래머스 - 개인정보 수집 유효기간 - 구현알고리즘 문제풀이/프로그래머스 2023. 6. 16. 17:04반응형
Lv1. 문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/150370
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📎알고리즘
내가 처음에 했던 것처럼 년, 월, 일로 경우를 나눠서 계산하려면 너무 많은 경우가 나오고 이걸 구현하려면 if 가 3개 이상 중첩된 내 코드를 보고 있으면 어지럽다.
단순 구현문제라, 방향만 잘 잡으면 되는데 이렇게
날짜
를 비교할 때년, 월, 일을 한번에 일자로 변환시켜 주면 그냥 대소만 비교하면 된다.
def dateChanger(date): #년월일을 일 총합으로 변환 year,month,day=map(int,date.split('.')) return (year-2000)*12*28+month*28+day
dateChanger
라는 함수를 선언해서 2023.06.16 같은 날짜를 일자의 총합으로 바꿔준 것이다.(year-2000)
을 한 이유는 안 해줘도 별 상관이 없고, input 범위가 2000~2022라 숫자가 불필요하게 커지지 않도록 크기를 조절한 것이다.주의할 점: 리스트 원소를 split() 할 때 숫자를 구분하는 경우가 많은데, 형변환 까먹지 않도록 하자!
이번에도 형변환 하지 않고 제출했다가 str과 int 대소비교를 할 수 없다는 오류를 목격했다.
주의해야 할 예외 케이스는 딱히 없다.
⌨코드
def dateChanger(date): #년월일을 일 총합으로 변환 year,month,day=map(int,date.split('.')) return (year-2000)*12*28+month*28+day def solution(today, terms, privacies): answer = [] t={} # 약관 이름: 유효기간인 딕셔너리 for i in terms: a,b=i.split() t[a]=int(b) today=dateChanger(today) for j in range(len(privacies)): date,term = privacies[j].split() changed_d=dateChanger(date) if today-changed_d >= t[term]*28: answer.append(j+1) return answer
💻제출결과
한번에 통과~
반응형'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 - 이모티콘 할인행사 - 중복순열, 완전탐색 (0) 2023.06.23 [Python] 프로그래머스 카카오 문제 - 택배 배달과 수거하기 - 그리디 (0) 2023.06.19