티스토리 뷰

백준

BOJ]7572번_간지

Pican 2019. 5. 27. 22:53

문제:예로부터 동아시아에서는 십간(十干)과 십이지(十二支)를 사용하여 연도를 표시하였다. 십간은 "갑을병정무기경신임계"를 말하며 십이지는 "자축인묘진사오미신유술해"를 말한다. 십간과 십이지로 구성된 간지를 사용하여 60년을 주기로 각 연도에 다음과 같이 이름을 부여한다: 최초 1년째는 "갑자"이고, 2년째는 "을축", 3년째는 "병인" 과 같이 올해의 간지에서 십간과 십이지의 다음 문자를 이듬해의 간지로 사용한다. 십간은 10년을 주기로, 십이지는 12년을 주기로 순환된다. 이런 순서로 하여 마지막 "계해"는 60년째를 나타내고, 61년째는 다시 "갑자"가 된다.

60갑자를 서양식으로 나타내기 위해 

  1. 십간을 0부터 9까지의 정수로 표현하고 
  2. 십이지를 "ABCDEFGHIJKL"로 표현하고
  3. 십간과 십이지의 순서를 바꾼다고 하자.

이를 서양식 간지 표현법이라고 부르자. 예를 들면, "갑자"는 "A0"로 "을축"은 "B1", "계해"는 "L9"으로 표현된다. 2013년은 계사년이므로 "F9"으로 표현되고, 2014년은 갑오년으로 "G0" 로 표현된다.

입력으로 주어진 연도를 서양식 간지 표현법으로 나타낸 것을 출력하는 프로그램을 작성하시오.

 

풀이: 

이 문제는 2013이 F9으로 된다는 것을 알아두어야 한다.

그러므로 2013을 기준으로 (0부터 계산시 F계열은 5번대)

십간 = 받은값+6%10

십이지 = 받은값+8%12

출력시 십이지는 알파벳 출력이기 때문에 'A' + a(%c)처리

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
 
int main() {
    int n, a, b;
    
    scanf("%d"&n);
 
    a = (n + 8) % 12;
    b = (n + 6) % 10;
 
    printf("%c%d\n"'A' + a, b);
}
cs

 

'백준' 카테고리의 다른 글

BOJ]14726번_신용카드 판별  (0) 2019.05.28
BOJ]2864번_5와 6의 차이  (1) 2019.05.27
BOJ]15917번_노솔브 방지문제야!!  (0) 2019.05.27
BOJ]14491번_9진수  (0) 2019.05.27
BOJ]5586번_JOI와 IOI  (0) 2019.05.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함