1. 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/150370
2. 나의 풀이
from datetime import datetime
from dateutil.relativedelta import relativedelta
def solution(today, terms, privacies):
today = datetime.strptime(today,'%Y.%m.%d')
answer = []
for i in range(len(privacies)):
period = 0
privacy = privacies[i].split()
date = datetime.strptime(privacy[0],'%Y.%m.%d')
type = privacy[1]
for j in range(len(terms)):
term = terms[j].split()
if term[0]==type:
period = int(term[1])
break
if period!=0 :
if today >= date + relativedelta(months=period):
answer.append(i+1)
return answer
3. 다른 사람의 풀이
def to_days(date):
year, month, day = map(int, date.split("."))
return year * 28 * 12 + month * 28 + day
def solution(today, terms, privacies):
months = {v[0]: int(v[2:]) * 28 for v in terms}
today = to_days(today)
expire = [
i + 1 for i, privacy in enumerate(privacies)
if to_days(privacy[:-2]) + months[privacy[-1]] <= today
]
return expire
- map ()
map(function, iterable)
- function : 각 요소에 적용할 함수
- iterable : 함수를 적용할 데이터 집합
map() 함수는 iterable의 각 요소에 대해 funciton 함수를 적용한 결과를 새로운 iterator로 반환한다. 이때, function 함수는 각 요소를 인자로 받아서 처리하며, 함수의 반환값이 새로운 iterator의 요소가 된다.
- enumerate()
enumerate(순서가 있는 객체, start=0 )
- enumerate() 함수는 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력으로 받았을 때, 인덱스와 값을 포함하여 리턴
- for문과 함께 자주 사용됨
- 인덱스와 값을 동시에 접근하면서 루프를 돌리고 싶을 때 사용
fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
print(fruits)
#['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
print(list(enumerate(fruits)))
#[(0, 'orange'), (1, 'apple'), (2, 'pear'), (3, 'banana'), (4, 'kiwi'), (5, 'apple'), (6, 'banana')]
'개발 지식' 카테고리의 다른 글
[Python] 순열과 조합 (combinations, permutations) (1) | 2024.10.18 |
---|---|
[ElK] Elasticsearch, Logstash, Kibana (0) | 2024.08.08 |
[DB] 비관계형 DB와 관계형 DB의 차이 (0) | 2024.08.08 |
[Python] list와 Numpy array 비교 (0) | 2024.07.24 |
APM(Application Performance Management)이란? (0) | 2023.02.24 |