알고리즘

백준 1251번 단어 나누기 (JAVA)

박카스마시며코딩 2023. 10. 8. 17:09

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