티스토리 뷰

반응형



이번 포스팅은 백준 알고리즘 사이트의 1924번 2007년 문제를 Python 언어로 코딩해보겠습니다. 아래 url로 접속하시면 문제를 볼 수 있습니다.


https://www.acmicpc.net/problem/1924


지난 백준 알고리즘 포스팅과 같은 단계로 for문 사용해보기 단계의 문제입니다.



이 문제의 경우 사용자로부터 월, 일에 해당하는 정수형 x와 y를 입력 받고, 입력 받은 월/일에 해당하는 요일이 언제인지를 출력해주는 문제입니다.


주어진 입력에 대해 어떻게 처리를 해서 해당 요일을 반환할 것인지를 생각해보시면 도움이 될 것 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Day = 0
arrList = [312831303130313130313031]
weekList = ["SUN""MON","TUE""WED""THU""FRI""SAT"]
 
x, y = map(int,input().split())
 
for i in range(x-1):
    Day = Day + arrList[i]
Day = (Day + y) % 7
 
print(weekList[Day])
 
'''
# calendar module 사용
import calendar

arrList = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
x, y = map(int,input().split())

Day = calendar.weekday(2007, x, y)
print(arrList[Day])
'''
cs


먼저 요일을 연산하기 위한 변수 Day를 지정해주고, arrList로 각 월에 해당하는 일의 값을 넣어줍니다.


1, 3, 5, 7, 8, 10, 12월은 31일, 4, 6, 9, 11월은 30일, 2월의 경우 28일이기에 각 월에 해당하는 일을 배열의 값으로 넣어줍니다.


weekList를 지정해 출력해줘야 하는 요일의 형태를 저장하였습니다.


다음은 x와 y를 통해 사용자로부터 월/일에 해당하는 데이터를 입력받습니다.


x, y = map(int, input.split())은 파이썬에서 여러 변수를 입력 받을 때 split() 함수를 이용해 split 함수의 인자값에 따라 변수를 나눠 입력 받겠다는 것을 의미합니다. 그리고 앞에 int를 적어줌으로써 int형 변수를 입력 받는다고 지정하게 됩니다.


for i in range(x-1)을 이용해 for문의 조건을 작성해줍니다.

(Python의 for문 이용시 range는 첫째 인자로 초기값, 둘째 인자로 종료값, 여기선 없지만 마지막 인자로 증가값을 적용합니다. 또한 두번째 인자인 종료값의 경우 해당 값을 포함하지 않기에 필요한 종료값보다 하나 더 크게/작게 조건을 작성해야 합니다.)


이는 Day에 입력 받은 월의 직전 달까지의 일 수를 계산하기 위한 코드로 Day에 arrList 값을 더해줍니다.


for문 이후에 Day에 최종으로 일에 해당하는 y의 값을 더해주고 7로 나눈 나머지를 넣어주게 되고, weekList에서 그 값에 해당하는 요일을 출력하도록 한 코드입니다.



15라인부터 21라인의 경우 python에서 사용할 수 있는 module 중 calendar 모듈을 사용한 것으로, 따로 요일을 구하기 위한 연산이 필요 없이 바로 원하는 날짜의 요일을 출력할 수 있는 모듈입니다.


중요 코드는 20라인으로 Day = calendar.weekday(2007, x, y) 로, 2007년 x월 y일에 해당하는 요일의 값을 반환받게 되고, 지정한 arrList에서 해당하는 요일을 매칭해 출력해주는 코드입니다.



Python의 경우 좋은 모듈들을 많이 제공하고 있기에 그를 사용하면 훨씬 더 편하고 짧은 코딩을 할 수 있습니다.


하지만 모듈을 이용하기만 하면 본인이 작성할 수 있는 능력이 늘지 않기에 코딩 연습을 할 때는 각자의 힘으로 직접 해보고, 이후에 체크를 하고 공부를 더 할 때 모듈이나 더 편한 방식을 알아가는 것이 좋은 방법인 것 같습니다.



다음 포스팅에서는 다음 단계의 코드를 보도록 하겠습니다.


다음 포스팅에서 봐요 :))

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 29 30 31
글 보관함