코테용 문제풀이/알고스팟

알고스팟 weekly calendar 문제 파이썬으로 풀기

doctscoder 2019. 10. 9. 07:04

날짜를 입력받아 한 주를 출력하는 문제이다.

간단해 보이지만 조금 어려운 문제인데, 일월화수목금토 순으로 날짜를 출력해야하고, 그 와중에 월이 넘어가면 날짜를 더해주던 빼주던 해야하기 때문이다.

다른 언어였다면 고생했을거 같지만, 파이썬은 indexing이 매우 잘 된 언어라, 월이 넘어가도 리스트에서 처리하는게 쉬워 금방 풀게 되었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#weeklycalendar
import sys
 
 
months = [312831303130313130313031]  # 월마다의 날 수
weekdays = ['Sunday''Monday''Tuesday''Wednesday''Thursday''Friday''Saturday']  # 요일
for i in range(case):
    month, day, weekday = map(strsys.stdin.readline().split())  # 입력
    month = int(month)
    day = int(day)
    startday = day - weekdays.index(weekday)  # 일요일부터 출력해야하므로 일요일이 몇일인지 계산
    resulting = []  # 날짜 입력
    for j in range(7):
        newday = startday+j  # 일요일부터 토요일까지의 날짜 
        resulting.append(newday)
    for k in range(7):
        check = resulting[k]
        if check <= 0:  # 0보다 작으면 더해줌
            check += months[month - 2]
        elif check > months[month-1]:  # 월이 가지고 있는 날짜보다 크면 빼줌
            check -= months[month-1]
        resulting[k] = str(check)  # 문자열 화 (그래야 join 쓸 수 있음)
    print(' '.join(resulting))  # 출력
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

join 함수를 이용해 다른 리스트에 넣고 출력할까 하다가 그냥 출력하게 했다. 이유는 없음

 

 

느낀점:

1. 조금 어렵다고 말하긴 했지만, 나도 실상은 이렇다.

물론 8달동안 이 문제만 붙들고 있었던 건 아니고, 그냥 예전에 고생했던 문제를 풀까 해서 풀었더니 풀렸다. 아무튼 20번만에 첫 정답이다. 항상 정답률 깎아먹기만 하는 나...