문제
Marie는 타임머신을 발명했고, 1700년에서 2700년 사이에 일년 중 프로그래머의 날(256번째 날)에 러시아를 방문하는 시간 여행을 통해 테스트하려고 한다.
1700년부터 1917년까지 러시아의 공식 달력은 율리우스력이었다. 1919년부터 그들은 그레고리력을 사용했다. 율리우스력에서 그레고리력으로의 전환은 1918년이고, 이 해에 1월 31일 다음날은 2월 14일이였다. 이것은 1918년 2월 14일은 러시아에서 32번째 날이었다는 것을 의미한다.
두 달력에서 2월은 일수가 가변적인 유일한 달이다; 윤년에는 2월이 29일까지이고, 다른 해는 28일까지이다. 율리우스력에서 윤년은 4로 나눌 수 있다.; 그레고리력에서 윤년은 다음 중 하나를 따른다 :
- 400으로 나눌 수 있다.
- 4의 배수이고 100의 배수가 아니다.
y라는 연도가 주어지면 공식 러시아 달력에 따라 해당 연도의 256번째 날을 찾아라. 그런 다음 dd는 두자리 일, mm이 두자리 개월이고 yyyy가 y인 dd.mm.yyyy 형식으로 출력하라.
예를 들어 year = 1984라면 1984는 4로 나누어져 윤년이다. 1918년 이후 윤녀이므로 256번째 날은 9월 12일이기 때문에 정답은 12.09.1984이다.
Function Description (기능 설명)
아래 에디터에서 dayOfProgrammer 함수를 완성하라. 주어진 연도의 256번째 날짜를 나타내는 문자열을 반환해야 한다.
dayOfProgrammer에는 다음 매개변수가 있다 :
- year : 정수
Input Format(입력 형식)
연도를 나타내는 단일 정수 y.
Constraints(제약)
1700 ≤ y ≤ 2700
Output Format(출력 형식)
dd는 두자리 일, mm이 두자리 개월이고 yyyy가 y인 dd.mm.yyyy 형식의 프로그래머의 날 전체 날짜를 출력하라.
예제
Input 0 | Output 0 |
2017 | 13.09.2017 |
Input 1 | Output 1 |
2016 | 12.09.2016 |
구현
#!/bin/python
import math
import os
import random
import re
import sys
#
# Complete the 'dayOfProgrammer' function below.
#
# The function is expected to return a STRING.
# The function accepts INTEGER year as parameter.
#
def dayOfProgrammer(year):
// 디폴트는 13일.
day = 13
// 13일이 아닐 경우가 두가지가 있음.
// 1. 1918년일 경우
if year == 1918 :
day = 26
// 2. 윤년일 경우
elif (year < 1918 and year%4 == 0) or (year > 1918 and \
(year%400 == 0 or (year%4 == 0 and year%100 != 0))) :
day = 12
return str(day) + '.09.' + str(year)
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
year = int(raw_input().strip())
result = dayOfProgrammer(year)
fptr.write(result + '\n')
fptr.close()
처음에 이 문제를 풀 때 그다지 어려운 문제는 아니었지만 1918년 테스트 케이스에서 오류가 나면서 내용을 제대로 파악하지 못해 실패를 여러 번 했습니다. 문제를 천천히 다시 읽어보니 1918년에 2월 14일이 32번째 날이라는 부분이 있었습니다. 그래서 윤년일때 12일, 윤년이 아닌 경우 13일 추가로 1918년을 26일로 출력될 수 있도록 하였습니다.
Day of the Programmer | HackerRank
Given year, determine date of the 256th day of the year.
www.hackerrank.com
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 올바른 괄호 (사용언어 : JAVA) (0) | 2023.09.24 |
---|---|
[프로그래머스] 상위 n개 레코드 (Oracle) (0) | 2022.10.21 |
[HackerRank] Bigger is Greater (사용언어 : JAVA) (0) | 2021.08.22 |
[HackerRank] The Grid Search (사용언어 : JAVA) (0) | 2021.08.20 |
[백준] 1371번 가장 많은 글자 (사용언어 : JAVA) (0) | 2021.08.14 |
댓글