백준이당
[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