import datetime
def solution(start_day):
rest_days = 0
current_day = start_day
for month in range(1, 13):
for day in range(1, 32):
try:
date = datetime.date(2023, month, day)
if date.weekday() in [5, 6]:
rest_days += 1
current_day = (current_day % 7) + 1
except ValueError:
pass
return rest_days
start_day = int(input())
total_rest_days = solution(start_day)
print(total_rest_days)
런타임 에러
ValueError: invalid literal for int() with base 10: ''
이유 찾는 중.. 다른 컴파일러에선 정상작동하는데..
if __name__ == "__main__":
start_day = int(input())
total_rest_days = solution(start_day)
print(total_rest_days)
if name == "main":을 써야되네? 이유는?
def solution(start_day):
rest_days = 0
current_day = start_day
for month in range(1, 13):
if month in [1,3,5,7,8,10,12]:
days = 31
elif month in [4,6,9,11]:
days = 30
else :
days = 28
for day in range(1, days + 1):
if current_day in [6, 7]:
rest_days += 1
current_day = (current_day % 7) + 1
return rest_days
if __name__ == "__main__":
start_day = int(input())
total_rest_days = solution(start_day)
print(total_rest_days)
import datetime
def count_rest_days(start_day, holidays):
rest_days = 0
current_day = start_day
for month in range(1, 13):
for day in range(1, 32):
try:
# 날짜 생성
date = datetime.date(2023, month, day)
# 주말 체크 (토요일 또는 일요일)
if date.weekday() in [5, 6]: # 토요일(5) 또는 일요일(6)인 경우
rest_days += 1
# 공휴일 체크
if [month, day] in holidays:
rest_days += 1
# 다음 날로 업데이트
current_day = (current_day % 7) + 1
except ValueError:
# 해당 날짜가 존재하지 않는 경우 (예: 4월 31일)
pass
return rest_days
# 입력
start_day = int(input("1월 1일의 요일을 입력하세요 (1=월, 2=화, ..., 7=일): "))
holidays = []
holiday_input = input("공휴일을 입력하세요 (예: [[1,2],[2,3]]): ")
if holiday_input.strip() != "":
holidays = eval(holiday_input)
# 총 쉬는 날 계산
total_rest_days = count_rest_days(start_day, holidays)
print("총 쉬는 날 수:", total_rest_days)
def solution(start_day, holiday):
rest_days = 0
current_day = start_day
weekend = []
for month in range(1, 13):
if month in [1,3,5,7,8,10,12]:
days = 31
elif month in [4,6,9,11]:
days = 30
else :
days = 28
for day in range(1, days + 1):
if current_day in [6, 7]:
rest_days += 1
weekend.append([month, day])
current_day = (current_day % 7) + 1
holiday_not_weekend = [element for element in holiday if element in weekend]
real_holiday = len(holiday)-len(holiday_not_weekend)
rest_days += real_holiday
return rest_days
if __name__ == "__main__":
start_day = int(input())
holiday = eval(input())
total_rest_days = solution(start_day, holiday)
print(total_rest_days)
공휴일이 토요일일때 금요일을 임시공휴일로, 금요일도 공휴일일땐 가장가까운 요일을 임시공휴일로
공휴일이 일요일일때 월요일을 ...
but 만약 올 해 이전이거나 넘어갈 시 추가 안함 (구현못함)
def solution(start_day, holiday):
rest_days = 0
current_day = start_day
weekend = []
saturday = []
sunday = []
friday = []
monday = []
for month in range(1, 13):
if month in [1,3,5,7,8,10,12]:
days = 31
elif month in [4,6,9,11]:
days = 30
else :
days = 28
for day in range(1, days + 1):
if current_day == 6:
rest_days += 1
weekend.append([month, day])
saturday.append([month,day])
friday.append([month,day-1])
elif current_day == 7 :
rest_days += 1
weekend.append([month, day])
sunday.append([month,day])
monday.append([month,day+1])
current_day = (current_day % 7) + 1
holiday_in_weekend = [element for element in holiday if element in weekend]
holiday_not_weekend = len(holiday)-len(holiday_in_weekend)
rest_days += holiday_not_weekend
for i in range(len(holiday_in_weekend)):
if holiday_in_weekend[i] in saturday:
if [holiday_in_weekend[i][0],holiday_in_weekend[i][1]-1] in friday:
rest_days += 1
elif holiday_in_weekend[i] in sunday:
if [holiday_in_weekend[i][0],holiday_in_weekend[i][1]+1] in monday:
rest_days += 1
return rest_days
if __name__ == "__main__":
start_day = int(input())
holiday = eval(input())
total_rest_days = solution(start_day, holiday)
print(total_rest_days)
정답
import ast #ast.literal_eval()
def solution(X, H):
monday = 1
tuesday = 2
wendsday = 3
thursday = 4
friday = 5
saturday = 6
sunday = 7
restday = 0
date_saturday = []
date_sunday = []
date_friday_front = []
date_monday_back = []
for month in range(1,13):
if month in [1,3,5, 7, 8, 10, 12]:
days = 31
elif month in [4,6,9,11]:
days = 30
else : #2
days =28
for day in range(1, days+1):
calc_week = X % 7
#saturday calc
if calc_week == saturday :
restday += 1
X += 1
date_saturday.append([month, day])
#firday calc
if day == 1:
if month == 3:
days = 28
elif month in [2, 4, 6, 8, 9, 11]:
days = 31
elif month in [5, 7, 10, 12]:
days = 30
else : #1
pass
date_friday_front.append([month-1, days])
else :
date_friday_front.append([month, day-1])
#sunday calc
elif calc_week == 0 :
restday += 1
X += 1
date_sunday.append([month, day])
#monday calc
if day == days:
if month == 12:
pass
else :
date_monday_back.append([month+1, 1])
else :
date_monday_back.append([month, day+1])
#day count
else :
X += 1
date_holiday = []
for i in range(len(H)):
if H[i] in date_saturday:
if [H[i][0], H[i][1]] in date_friday_front:
if [H[i][0], H[i][1]] == [1,1]:
pass
else:
restday += 1
else:
restday += 1
elif H[i] in date_sunday:
if [H[i][0], H[i][1]] in date_monday_back:
if [H[i][0], H[i][1]] == [12,31]:
pass
else:
restday += 1
else:
restday += 1
else:
restday += 1
date_holiday.append([month, day])
return restday
if __name__ == "__main__":
X = int(input())
H = ast.linear_eval(input())
print(solution(X,H))