
https://school.programmers.co.kr/learn/courses/30/lessons/12901
1. 윤년
윤년: 유일하게 2월에 2/29이 추가되어 1년이 366일이 되는 것을 의미한다.
윤년의 조건
=> year % 4 == 0 and year % 100 != 0 or year % 400 == 0
list의 range를 설정하여 sum 함수 적용 가능
sum(list[0:3])
[another solution]
#[출처]https://docs.python.org/ko/3/library/datetime.html?highlight=weekday]
#date.weekday() : 정수로 요일을 반환. 월요일은 0, 일요일은 6
#date.isoweekday() : 월요일이 1, 일요일이 7
from datetime import date
date(2002, 12, 4).weekday() == 2 #수요일
date(2002, 12, 4).isoweekday() == 3 #수요일
def solution(a, b):
answer = ''
months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] #윤년 - 달의 일 수
days = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]
#7로 나누어 나머지가 1이면 1/1에 해당하는 요일
date = sum(months[0:a-1]) + b
answer = days[(date % 7)]
return answer
윤년 문제는 입문자에게 항상 나오는 문제 같다.
특히, 여기선 언급이 없었지만 4, 100, 400의 문제 설명을 통해 조건문을 작성할 수 있느냐 등이 예시이다.
https://school.programmers.co.kr/learn/courses/30/lessons/12910
[출처] https://wikidocs.net/22803
filter(): 특정 조건으로 걸러, 걸러진 요소들로 iterator객체를 만들어서 리턴해주는 함수.
answer = list(filter(lambda x : x < 5, arr))
def solution(arr, divisor):
answer = []
answer = list(filter(lambda x: x % divisor == 0, arr))
if not answer:
answer.append(-1)
else:
answer.sort()
return answer
##참고 코드
# return ( sorted([filter(lambda x: x % divisor == 0, arr)] or [-1]) )
# return 에서 empty list는 어차피 False로 인식하기 때문에, or 을 이용하여 [-1] 로 대입하게 한다.