Day of the Programmer

매해 256번째 날은 국제 프로그래머의 날이다. 일반적으로 9월 13일이고 윤년의 경우에는 9월 12일이 된다. 256은 2의 제곱으로 표현 가능한 자연수 중 356을 넘지않는 최대값이다. 또한 1바이트로 표현할 수 있는 정보의 최대 개수이기도 하다. 러시아는 2009년부터 이 날을 공휴일로 지정했다.


라시아 달력

  • 러시아는 1917년 까지는 줄리안 달력을 사용했지만 1919년 부터는 그레고리 달력을 사용한다.
  • 줄리안달력에서 고레고리달력으로 넘어간 시점은 1918년에 발생했다
    • 1918년 1월 31일 다음 날은 2월 14일이 되었다
  • 2월 달이 29일인 년도를 윤년이라고 하는데 두 달력은 이 윤년을 계산하는 방식이 서로 다르다
    • 줄리안 달력: 4로 나누어 떨어지는 년도가 윤년
    • 그레고리 달력: 년도가 400으로 나누어 떨어지면 윤년, 아니라면 4로 나누어 떨어지고 100으로 나누어 떨어지지 않는다면 윤년


퀴즈

임의의 년도가 주어질 때 그 년도에 해당하는 프로그래머의 날이 언제인지 계산하라. https://www.hackerrank.com/challenges/day-of-the-programmer/problem


입출력 예제

Sample Input

2016

Sample Output

12.09.2016


js 코드

풀이는 간단하다. 그냥 위에 제시된 윤년의 조건을 분기로 표현하면 된다.

function dayOfProgrammer(year) {
    if(year > 1918){
        // 그레고리 달력
        if(year%400 === 0){
            // 윤년
            return "12.09." + year
        }else if(year%4 === 0 && year%100 !== 0){
            // 윤년
            return "12.09." + year
        }else{
            // 평년
            return "13.09." + year
        }
    }else if(year < 1918){
        if(year%4 === 0){
            // 윤년
            return "12.09." + year            
        }else{
            // 평년
            return "13.09." + year            
        }
    }else{
        // 1918년
        return "26.09." + year     
    }
}