6월부터 시작해서 첫 번째, 두 번째를 가는 것은 코딩하기 쉽다. 매우 직관적이니까.

케이스 1) 2020년 6월에서 시작해서 7번을 가면 12월이 된다. 그러면 해당 년도를 모두 채우고, 그 다음부터는 12년 주기로 1부터 12까지 반복하면 된다.

 

케이스 2) 그런데 2020년 6월부터 시작해서 뒤로 가는것은 일반적인 뺄셈으로 생각하면 쉽지가 않다. 단순 산수 계산에서야 그냥 빼면 되지만 년도가 바뀌면 1월부터 시작해서 2월, 3월, ... 12월에 익숙해진 우리는 이런 계산이 직관적이지가 않다.

 

근데 잘 생각해보면 케이스 1과 케이스 2는 사실 같다.

케이스 1은 2020년에 + 7번을 하면 해당년도 주기를 모두 채우고 새 주기로 넘어간다. 이후부터 1~12, 1~12만 반복하면 된다.

케이스 2는 2020년에 -5번을 하면 해당년도 주기를 모두 채우고 새 주기로 넘어간다. 이후부터는 마찬가지로 12회를 반복한다.

우리가 여기서 어려운 것은 1월부터 시작해서 12월을 세야 하는데 12월부터 시작해야 한다는거다. 이건 생각을 조금만 바꾸면 쉽게 해결할 수 있다.

1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
12 11 10 9 8 7 6 5 4 3 2 1

숫자를 뒤에서부터 1, 2, 3, ..., 12를 세면 된다.

만약 12월을 0으로 시작할 경우는 0, 1, 2, ... , 11 이렇게 세면 된다.

사실 이런 경우 대게는 한 쪽 방향이 1에서 시작한다면 뒤집는 방향은 0부터 시작하는게 더 좋다.

그러면 항상 그 합은 12 즉, 주기로 나오니까 계산이 쉽다.

1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
11 10 9 8 7 6 5 4 3 2 1 0

1월 + 11 = 12

2월 + 10 = 12

....

12월 + 0 = 12

 

즉, 뒤로 세서 나온 순서가 7이라면 몇 월이지? 할 때는 (12 - 7) = 5월이구나 하면 된다.

 

이것을 이용한 예를 추가한다.

2020/04/02 - [개발자/Python] - 과거 주차 계산하기 (preWeek(201713,10) 을 하면 201703 출력)

불러오는 중입니다...

 

+ Recent posts