-
[백준] 1924번: 2007년코딩(Coding)/백준 문제풀이 2020. 12. 31. 12:27728x90
링크: www.acmicpc.net/problem/1924
1924번: 2007년
첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
www.acmicpc.net
2007년 성공분류
문제
오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
출력
첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.
문제접근
이번 문제는 시간을 계산하는 문제와 비슷하게 날짜를 구하는 문제이다. 단순히 입력된 월과 입력된 일을 더해서 7로 나누면 될거 같았다. 그리고 윤년에 대한 언급이 없는걸 보면 다루지 않는것 같아서 제외하고 문제를 접근했다.
먼저 나는 월을 누적합 리스트로 나타내었다. 그리고 그 것과 입력된 일을 더해 입력된 x월 y일을 일로 바꾸어 주고 단순히 7로 나누어 결과를 출력하도록 간단히 구현하였다.
코드
""" 백준 알고리즘 1924번: 2007년 https://www.acmicpc.net/problem/1924 월/일로 되어있는 자료를 일로 바꿔주고 나눠서 나머지가 0~6이면 각각 일~토 이므로 알맞게 매칭해서 해결한다. """ import sys # 날짜별로 arr 선언 day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"] # 각 달마다 일의 누적 합 arr 선언 month = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] def calc(x, y): dayCnt = month[x-1] + y # 전체 일수를 확인 return day[dayCnt % 7] # 나머지를 인덱스로 넣어서 날짜를 리턴 def main(): x, y = sys.stdin.readline().split() x = int(x); y = int(y) print(calc(x, y)) if __name__ == "__main__": main()
이 문제에서 중요한 것이 아마 누적합 개념이지 않을까 싶다.
728x90'코딩(Coding) > 백준 문제풀이' 카테고리의 다른 글
[백준] 14681번: 사분면 고르기 (0) 2021.01.04 [백준] 1436번: 영화감독 숌 (0) 2021.01.04 [백준] 1920번: 수 찾기 (0) 2020.12.30 [백준] 7785번: 회사에 있는 사람 (0) 2020.12.29 [백준] 10174번: 팰린드롬 (0) 2020.12.29