입력 방법이 숫자 한 개씩 주고 있기 때문에 int 형으로 받기 보단 string을 이용해서 차례차례 더해 숫자를 완성시켰다.
- 첫번째(가장 큰 자리) 숫자가 올바른 범위에 들어가면 숫자를 완성시켜 완전한 숫자를 비교해 카운트를 증가시킨다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <queue>
#include <cmath>
using namespace std;
// 어느 부분부터 시작하면 될 지
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int t, n, m, cnt;
char num;
string x, y, ans;
cin >> t;
for (int i = 0; i < t; i++) {
x = ""; y = ""; cnt = 0;
cin >> n >> m; // 돌림판 칸, 숫자 자릿수
vector<char> v(n);
for (int k = m; k > 0; k--) { // x 입력
cin >> num;
x += num;
}
for (int k = m; k > 0; k--) { // y 입력
cin >> num;
y += num;
}
for (int k = 0; k < n; k++) { cin >> v[k]; } // 돌림판
for (int k = 0; k < n; k++) {
ans = "";
if (v[k] >= x[0] && v[k] <= y[0]) {
for (int z = 0; z < m; z++) { ans += v[(k + z + n) % n]; }
if (stoi(ans) >= stoi(x) && stoi(ans) <= stoi(y)) { cnt++; }
}
}
cout << cnt << '\n';
}
return 0;
}
숫자 하나하나를 따로 또 따로 다뤄줘야했던 귀찮지만 어렵지는 않았던 문제.