728x90
반응형
https://www.acmicpc.net/problem/22351
풀이
1 ~ 999 사이의 수가 연속해서 나열해 있는 문자열이 주어집니다.
그 문자열의 처음과 끝자리 수가 무엇인지 맞추는 문제입니다.
수가 1~999고 만약 수가 999나 11이 나올경우 9 9나 1 1이 아니라 999 999나 11 11이 되어야 합니다.
그러므로 입력받은 문자열의 길이가 4보다 작을 경우 모든 문자가 같은지 for문을 통해 체크해줍니다.
같을 경우 그 문자열 자체를 출력해줍니다.
그러지 않을 경우 for문을 통해 찾아줘야 합니다.
똑같은 문자열을 변수에 저장해줍니다.
startWith(문자열의 맨 앞이 문자와 같을 경우 true)이라는 명령어를 이용해 앞자리를 비교해줍니다.
같을 경우 문자열의 앞에서부터 substring으로 계속해서 잘라줍니다.
변수의 길이가 0이 될 경우 맞는 문자를 찾은것이므로 StringBuilder에 값을 넣어줍니다.
1부터 999까지 비교하였으나 아닐경우 sb가 비어있으므로 다시 처음 for문을 진행해줍니다.
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int n = 1;
if(s.length() < 4) {
char c = s.charAt(0);
for(; n < s.length(); n++) {
if(s.charAt(n) != c) {
break;
}
}
}
StringBuilder sb = new StringBuilder();
if(n == s.length()) {
sb.append(s + " " + s);
}
else {
for(int i = 1; i <= 999; i++) {
if(s.startsWith(Integer.toString(i))) {
String str = s;
for(int j = i; j <= 999; j++) {
if(str.startsWith(Integer.toString(j))) {
str = str.substring(Integer.toString(j).length());
}
else {
break;
}
if(str.length() == 0) {
sb.append(i + " " + j);
break;
}
}
if(sb.length() != 0) {
break;
}
}
}
}
System.out.print(sb);
}
}
728x90
반응형
'백준 > 20001 - 25000' 카테고리의 다른 글
[백준] 22966번 : 가장 쉬운 문제를 찾는 문제(JAVA) (0) | 2021.08.20 |
---|---|
[백준] 22864번 : 피로도(JAVA) (0) | 2021.08.10 |
[백준] 21176번 : Smoothie Stand(JAVA) (0) | 2021.07.26 |
[백준] 21312번 : 홀짝 칵테일(JAVA) (0) | 2021.07.25 |
[백준] 21603번 : K 2K 게임(JAVA) (0) | 2021.07.25 |
댓글