[usaco] 1.1 Friday the Thirteenth - usaco
2009.08.08 19:27 Edit
날짜 계산에 대해 지식이 없으면 꽤 어려운 문제이다.
그리고 신기하게도 나머지 문제들은 노란색에 소가 그려진 배경을 쓰고 있는데 이 문제는 보라색 배경이다 -_- 오류겠지?
y년 m월 d일이 무슨 요일인가 하는 것을 풀면 간단히 해결되는 문제이다.
y년 m월 d일이 무슨 요일인지 알기위해서는
1~y-1년까지의 날짜수 + 1~m-1월 까지의 날짜수 + d일을 더해서 7로 나눈 나머지를 구하면 된다.
그 나머지는 1년 1월 1일이 월요일이라고 하면 그 숫자가 1일때 월요일이다.
문제에서는 1900년 1월 1일이 월요일이라고 주어졌는데
계산을 간단하게 하기 위해 1년 1월 1일부터 구했다.
1~y-1년 까지의 날짜수는 년수*365를 해주고
거기에 4년마다 윤년 100년마다 윤년아니고 400년 마다 윤년이기 때문에
4로 나눈것을 더해주고 100으로 나눈 것을 빼주고 400으로 나눈 것을 다시 더해주면
날짜수가 나온다.
거기에 월,일을 더해주면 우리가 원하는 것이 나온다.
1900년 1월 1일이 만약 월요일이 아니라고 했다면
getday에 그 차이만큼 더해주고 다시 7로 나눈 나머지를 구해야 하는데
다행히 월요일이라고 했기 때문에 그냥 쓰면 된다.
그리고 신기하게도 나머지 문제들은 노란색에 소가 그려진 배경을 쓰고 있는데 이 문제는 보라색 배경이다 -_- 오류겠지?
y년 m월 d일이 무슨 요일인가 하는 것을 풀면 간단히 해결되는 문제이다.
y년 m월 d일이 무슨 요일인지 알기위해서는
1~y-1년까지의 날짜수 + 1~m-1월 까지의 날짜수 + d일을 더해서 7로 나눈 나머지를 구하면 된다.
그 나머지는 1년 1월 1일이 월요일이라고 하면 그 숫자가 1일때 월요일이다.
문제에서는 1900년 1월 1일이 월요일이라고 주어졌는데
계산을 간단하게 하기 위해 1년 1월 1일부터 구했다.
1~y-1년 까지의 날짜수는 년수*365를 해주고
거기에 4년마다 윤년 100년마다 윤년아니고 400년 마다 윤년이기 때문에
4로 나눈것을 더해주고 100으로 나눈 것을 빼주고 400으로 나눈 것을 다시 더해주면
날짜수가 나온다.
거기에 월,일을 더해주면 우리가 원하는 것이 나온다.
1900년 1월 1일이 만약 월요일이 아니라고 했다면
getday에 그 차이만큼 더해주고 다시 7로 나눈 나머지를 구해야 하는데
다행히 월요일이라고 했기 때문에 그냥 쓰면 된다.

