프로젝트오일러 19번 20세기에서, 매월 1일이 일요일인 경우는 몇 번?
14 Jan 2022 | 기초 TIL 프로젝트오일러문제 설명
다음은 달력에 관한 몇 가지 일반적인 정보입니다 (필요한 경우 좀 더 연구를 해 보셔도 좋습니다).
1900년 1월 1일은 월요일이다.
4월, 6월, 9월, 11월은 30일까지 있고, 1월, 3월, 5월, 7월, 8월, 10월, 12월은 31일까지 있다.
2월은 28일이지만, 윤년에는 29일까지 있다.
윤년은 연도를 4로 나누어 떨어지는 해를 말한다. 하지만 400으로 나누어 떨어지지 않는 매 100년째는 윤년이 아니며, 400으로 나누어 떨어지면 윤년이다.
20세기 (1901년 1월 1일 ~ 2000년 12월 31일) 에서, 매월 1일이 일요일인 경우는 총 몇 번입니까?
제출 답안
daylist = [31,28,31,30,31,30,31,31,30,31,30,31]
total=0
count=0
for y in range(1900,2001):
#1900년부터 2001년까지
for m in range(12):
#1900년부터 2001년까지 중 1월(index0)부터 12달까지
day=daylist[m]
#해당 달의 일수를 day에 저장
if y%4==0 and m==1:
#윤년이고 2월(index1)이면
day+=1
#하루 더한다
for d in range(day):
#1900년부터 2001년까지 중 1월부터 12달까지 중 월에 해당하는 날들 동안
if y>1900 and d==0 and total%7==6:
#1901년이고 첫번째 날이고 일요일 경우에
count+=1
#카운트를 1더한다
total+=1
#1900년부터 2001년까지 일수계산
print(total,count)
#36891 171
#전체 일수, 첫째날이면서 일요일인 날의 수
인터넷에 그런 풀이도 있었다.
1일이 100년동안 1200번 있을건데 그럼 1200을 7로 나누면 171.4이므로 일요일을 비롯한 각 요일들이 171번 있을 것이다.
역시 사람은 머리를 열심히 써야한다.