티스토리 뷰
Python3
' 오늘은 2007년 ' ... 그럼 이 문제는 2007년에 만들어졌던걸까.
그걸 2021년에 풀고 있는 나란 사람. 갑자기 자괴감...
2007년 1월 1일은 월요일.
그렇다면 2007년 X월 Y일은 무슨 요일일까?
두 가지로 풀어볼 것이다. ( calendar module 사용했을 때, 사용하지 않았을 때 )
전체 코드 ( calendar module 사용 X ) :
m, d = map(int, input().split()) # X월 Y일 (month,day) 입력
dayList = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
weekList = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
Day = 0
for i in range(m-1):
Day = Day + dayList[i]
Day = (Day + d) % 7
print(weekList[Day])
코드를 뜯어 보면,
day 와 week 리스트를 미리 저장해둔다.
dayList = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
weekList = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
dayList는 1월부터 12월까지 N일까지 있는 것을 저장.
weekList는 일요일~토요일까지 N요일까지 있는 것을 저장.
여기서 중요한 코드는 이 부분이다.
Day = 0
for i in range(m-1):
Day = Day + dayList[i]
Day = (Day + d) % 7
range(m-1) 을 사용하여 변수 i 에는 0부터 m-1미만까지 들어간다.
...
예를 들어, m = 2 이고 d = 14일 때, i에는 0만 들어간다. 그럼 Day = Day + dayList[0] 이 들어가고,
dayList[0] 은 첫번 째 index인 31이다.
다음 Day = (Day + d) % 7 에는 윗 줄의 Day + 14 가 7로 나눈 나머지가 Day에 대입된다.
#input
3 14
#output
WED
이제 파이썬에 있는 calendar module을 사용해 볼 것이다.
calendar module 사용
>> [Python/Function & Grammer] - Python : calendar - 달력 관련 라이브러리
Python : calendar - 달력 관련 라이브러리
▶ 달력 (calendar) 파이썬에는 날짜와 관련된 라이브러리가 있다. ( calendar module ) 캘린더 라이브러리를 사용하기 위해서는 일단 호출을 해야한다. ▶ 라이브러리 호출 import calendar ' import ' 를 이용
chae-developer.tistory.com
전체 코드 ( calendar module 사용 ) :
import calendar # Python calendar module 사용
dayList = ["MON","TUE","WED","THU","FRI","SAT","SUN"]
m, d = map(int, input().split())
Day = calendar.weekday(2007, m, d)
print(dayList[Day])
calendar module을 사용하려면, 일단 라이브러리를 호출 해줘야 한다.
import calendar
' 달력 관련 라이브러리 ' 이다.
import calendar
#input
print(calendar.calendar(2020))
#output
2020
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 1
6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8
13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15
20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22
27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29
30 31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 1 2 3 4 5 6
6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30
31
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 1 1 2 3 4 5 6
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
30
이렇게 이 라이브러리를 이용하면, 해당 년도의 깔끔한 달력을 볼 수도 있다. (TMI)
calendar.weekday() 함수 이용
dayList = ["MON","TUE","WED","THU","FRI","SAT","SUN"]
Day = calendar.weekday(2007, m, d)
2007년 m월 d일의 해당 요일을 Day에 대입한다.
요일은 ( 0 : 월요일 ~ 6 : 일요일 ) 이기 때문에, calendar module을 사용하지 않은 코드와 달리 dayList[] 가 월요일부터 시작한다.
이 라이브러리를 이용하여 더 짧고 간단한 파이썬의 장점을 활용해서 문제를 풀 수 있다.
해당 문제 : https://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
더 많은 입출력 예제는 위 사이트 클릭! 하면 볼 수 있다.
'Python > Algorithm' 카테고리의 다른 글
백준 10818 : 최소, 최대 (0) | 2021.01.23 |
---|---|
백준 8393 : 합 (0) | 2021.01.21 |
백준 2739 : 구구단 (0) | 2021.01.21 |
백준 2741,2742 : N 찍기, 기찍 N (0) | 2021.01.21 |
백준 11721 : 열 개씩 끊어 출력하기 (0) | 2021.01.20 |
- Total
- Today
- Yesterday
- python문법
- 파이썬for문
- 백준파이썬
- range함수
- 백준 별찍기
- 백준별찍기
- python별찍기
- 데이터 모델링
- 데이터베이스
- Python
- SUM함수
- SQLD 2과목
- NaverCloudPlatform
- 파이썬
- 별 찍기
- f-string
- 파이썬입출력
- SQLD40회
- 파이썬 입출력
- Unity GameObject 생성
- SQLD
- BAEKJOON
- 백준
- 알고리즘
- 파이썬sum
- 네이버클라우드플랫폼
- SQLD 1과목
- 40회 SQLD
- SQLD1과목
- 파이썬문법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |