[C++] BOJ 11504번: 돌려 돌려 돌림판!

ㅎㅎ·2023년 9월 18일
0

BOJ

목록 보기
58/65

BOJ 11504번: 돌려 돌려 돌림판!

문제

입출력


문제 풀이

입력 방법이 숫자 한 개씩 주고 있기 때문에 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;
}

숫자 하나하나를 따로 또 따로 다뤄줘야했던 귀찮지만 어렵지는 않았던 문제.

profile
Backend

0개의 댓글