https://www.acmicpc.net/problem/7572

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N;
cin >> N;
int cha = N - 2013;
// 지 구하기
int ji = (5 + cha) % 12;
if(ji < 0) ji += 12;
cout << char(ji + 'A');
// 간 구하기
int gan = (9 + cha) % 10;
if(gan < 0) gan += 10;
cout << gan;
return 0;
}
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N;
cin >> N;
int cha = N - 2013;
// 지 구하기
int ji = ((5 + cha) % 12 + 12) % 12;
cout << char(ji + 'A');
// 간 구하기
int gan = ((9 + cha) % 10 + 10) % 10;
cout << gan;
return 0;
}
10 // 3
10 % 3
- - - - - - -
Python: 3, 1
C++: 3, 1
당연하게도 a와 b가 모두 양수인 경우 두 언어 모두 우리가 아는 결과와 같다.
-10 // 3
-10 % 3
- - - - - - -
Python: -4, 2
C++: -3, -1
이 문제에서 등장하는 케이스가 되겠다. (N < 2013)
Python의 경우 나머지가 양수, C++의 경우 나머지가 음수가 나왔다.
10 // -3
10 % -3
- - - - - - -
Python: -4, -2
C++: -3, 1
이번에는 반대로 나머지가 Python이 음수, C++이 양수였다.
-10 // -3
-10 % -3
- - - - - - -
Python: 3, -1
C++: 3, -1
이번에는 두 언어 모두 똑같이 나머지가 음수로 나왔다.
🎯 간지 문제 적용 예시
11, C++에서는 -1이 되며,11은 우리가 원하는 2007년의 ‘지‘이며, C++ 연산의 결과로 나온 -1은, 0번 인덱스보다 1칸 이전이라고 생각할 수 있다.💡 그래서 해결책은?
(a % b + b) % b
를 사용하면 된다.