백준이당

[C++] 백준 1515번 : 수 이어쓰기

이히당 2025. 3. 30. 17:52

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

 

문제를 잘 읽자 ㅎㅋㅎㅋ

 

 

처음 틀린건 문제 내에서

첫째 줄에 지우고 남은 수를 한 줄로 이어 붙인 수가 주어진다. 이 수는 최대 3,000자리다.

 

라는 조건을 보고 문제해석을 잘못했기 때문이다.

 

투포인터 비슷하게 풀었다.

두개의 수를 비교하면서 최소 N값을 구하기 위한 반복문을 돌리는 것이 핵심이었다. 

 

#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    string str;
    cin >> str;

    int turn = 0; // 입력받은 문자열에서 비교할 위치를 가리키는 포인터
    for (int i = 1; i < INT_MAX; i++)
    {
        string currNum = to_string(i);
        int t = 0; // 현재 숫자의 위치를 가리키는 포인터

        // 현재 비교할 숫자의 길이만큼 탐색전까지 반복복
        while (t < currNum.size())
        {
            // 현재 비교 문자열 확인 요소 == 비교문자열 확인 요소
            if (currNum[t] == str[turn])
            {
                turn++; // 비교하는 문자열 포인터 이동
            }
            t++; // 현재 비교할 숫자 포인터를 이동
        }

        if (turn >= str.size())
        {
            cout << i;
            return 0;
        }
    }
}

 

끗!

728x90