문제
연도 N이 주어지면 그 해의 간지(십간+십이지)를 출력하는 문제이다. 십간은 10년 주기, 십이지는 12년 주기를 가지며 특정 기준 연도를 기준으로 나머지 연산으로 구한다.
입력
첫째 줄에 연도 N이 주어진다. (1 이상의 정수)
출력
해당 연도의 간지를 한 줄에 출력한다. 십간 문자(AL) 1개와 십이지 숫자(09)를 이어 출력한다.
예제
| 입력 | 출력 |
|---|---|
4 | A0 |
14 | A0 |
2010 | G6 |
풀이
나머지 연산만으로 십간과 십이지를 동시에 계산하는 수학적 구현 문제이다.
- 십이지(십이지지)는 12가지이며, 기준 연도 4를 빼고 12로 나눈 나머지로
"ABCDEFGHIJKL"문자열에서 인덱스를 얻는다. - 십간(십천간)은 10가지 숫자(0~9)이며, 연도에 6을 더한 후 10으로 나눈 나머지를 숫자로 출력한다.
- 두 결과를 이어 붙여 한 줄로 출력한다.
핵심 아이디어: 특정 기준 연도(N=4 → A0)로부터 각 주기에 맞는 오프셋을 설정하면 단 한 줄의 식으로 간지를 계산할 수 있다.
코드
N = int(input())
print("ABCDEFGHIJKL"[(N - 4) % 12] + str((N + 6) % 10))복잡도
- 시간: O(1)
- 공간: O(1)