https://www.acmicpc.net/problem/1251
1251번: 단어 나누기
알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다
www.acmicpc.net
저는 구현을 통해 문제를 해결하였습니다.
2중 for문으로 나눌 부분을 선택하였고, 이들을 역순으로 하여 합쳐주고 비교하여 사전순으로 가장 앞에 있을 것으로 초기화 하였습니다.
97%에서 '틀렸습니다'가 나온다면 입력값이 사전순으로 가장 앞에 있어서 그것을 출력하는 것이 아닌지 확인하시기 바랍니다. 입력값은 포함되면 안됩니다.
package BOJ.etc;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BOJ_1251 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int size = str.length();
String result = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
for (int i = 1 ; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
StringBuilder temp1 = new StringBuilder(str.substring(0, i)).reverse();
StringBuilder temp2 = new StringBuilder(str.substring(i, j)).reverse();
StringBuilder temp3 = new StringBuilder(str.substring(j, size)).reverse();
StringBuilder sb = new StringBuilder(temp1);
sb.append(temp2);
sb.append(temp3);
if (result.compareTo(sb.toString()) > 0) {
result = sb.toString();
}
}
}
System.out.println(result);
}
}
'알고리즘' 카테고리의 다른 글
백준 14497번 주난의 난 (JAVA) (1) | 2023.10.10 |
---|---|
백준 29703번 펭귄의 하루 (JAVA) (1) | 2023.10.09 |
백준 14607번 피자 (JAVA) (1) | 2023.10.07 |
백준 13699번 점화식 (JAVA) (0) | 2023.10.06 |
백준 1544번 사이클 단어 (JAVA) (0) | 2023.10.05 |