728x90
반응형
문제 출처 : https://www.acmicpc.net/problem/1515
풀이
브루트포스로 숫자를 증가시키며 풀이하는 문제이다.
예시로 입력 - 234092 가 있다고 하자.
처음 포인터는 0번(2)를 가리킨다.
처음 숫자(num)을 0부터 시작해서 반복문을 돌려 증가시킨다.
num 0 .. 1 .. 2에서 포인터가 가리키는 2와 일치하게 된다. 이 경우 포인터를 증가시킨다.
이제 포인터는 1번(3)을 가리키고, num은 3이다.
포인터의 수와 num이 일치하므로 또 포인터를 증가시킨다.
이제 포인터는 2번(4)을 가리키고, num은 4이다.
포인터의 수와 num이 일치하므로 또 포인터를 증가시킨다.
이제 포인터는 3번(0)을 가리키고, num은 5이다.
5..6..7..8..9..10 에서 10은 [1, 0] 에서 0이 있으므로 포인터의 수와 일치한다.
이렇게 증가하다 포인터가 입력한 문자열의 길이와 같아지면 정답(num)을 출력하면 된다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
string str = "";
cin >> str;
int num = 0, ptr = 0;
while(num++ < 30000) {
string num2str = to_string(num);
for(int i = 0; i < num2str.length(); i++) {
// num의 요소 중 일치하는 것이 있으면 포인터 증가
if(str[ptr] == num2str[i]) {
ptr++;
}
if(ptr == str.length()) {
cout << num;
return 0;
}
}
}
return 0;
}
728x90
반응형
'Tech > Algorithm' 카테고리의 다른 글
[BOJ] 백준 9466 텀 프로젝트 c++ (dfs) (0) | 2023.07.15 |
---|---|
[BOJ] 백준 1939 중량제한 c++ (이분탐색, bfs) (1) | 2023.07.13 |
[BOJ] 백준 18428 감시 피하기 c++ (백트래킹) (0) | 2023.07.05 |
[BOJ] 백준 1021 회전하는 큐 c++ (deque) (0) | 2023.07.05 |
[프로그래머스] 문자열 압축 c++ (level2) 2020 KAKAO BLIND RECRUITMENT (0) | 2023.06.12 |