반응형
1515
완전 탐색 문제이다.
알고리즘
base와 pointer 두 가지를 두고 문제를 해결한다.
290119라는 수가 주어졌을 때, 시작은 base = 1, pointer는 0(index)을 가르킨다.
- base와 pointer가 같은지 검사한다.
- 만약 같다면, base와 pointer 모두 증가시킨다.
- 만약 같지 않다면, base만 증가시킨다.
- 두 자리, 세 자리수의 경우 base의 첫 번째 자리부터 1번처럼 탐색한다.
- 여기서 여러 수중 한 자리인 경우, base와 pointer 모두 증가시킨다.!
예시
base = 1, pointer = 0 → 1 ≠ 2이기 때문에, base만 증가시킨다.
base = 2, pointer = 0 → 2 = 2이기 때문에, base와 pointer 모두 증가시킨다.
base = [ 3, 4, 5, 6, 7, 8 ], pointer = 1 → [] ≠ 9이기 때문에, base만 증가시킨다.
base = 9, pointer = 9 → 1 = 9 = 9이기 때문에, base와 pointer 모두 증가시킨다.
base = 10 = [ 1, 0 ], pointer = 2 → 1은 같지 않지면 두 번째 0이 pointer와 같기 때문에, 모두 증가시킨다.
마지막까지 이 과정을 진행하고 base가 정답이 된다.
소스 코드
import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] input = br.readLine().toCharArray();
System.out.println(numberOfWords(input));
}
private static int numberOfWords(final char[] input){
int pointer = 0;
int base = 0;
while(base++ <= 30_000){
char[] temp = String.valueOf(base).toCharArray();
for(int i=0; i<temp.length; i++){
if(temp[i] == input[pointer]){
pointer++;
}
if(input.length == pointer){
return base;
}
}
}
return base;
}
}
반응형
'백준' 카테고리의 다른 글
[ JAVA ] 백준 2138 전구와 스위치 (0) | 2024.12.23 |
---|---|
[JAVA] 백준 20437 문자열 게임 (0) | 2024.12.22 |
[JAVA] 백준 15889 라인 스위핑 (1) | 2024.05.11 |
[JAVA] 백준 2170 라인 스위핑 (0) | 2024.05.11 |
[JAVA] 백준 15787 (0) | 2024.04.17 |