728x90
반응형
안녕하세요 놀이방 사장입니다.
이번 포스팅은 백준 1251
"단어 나누기" 포스팅입니다.
1251번: 단어 나누기
알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다
www.acmicpc.net
단어나누기는 브루트포스 알고리즘을 사용해야합니다.
저도 몰라서 다른 분꺼 보고 풀었습니다.
단어를 세개로 쪼개야하더라구요
애초에 여기부터 계속 이해가 안갔습니다.
근데 코드를 보고 아 이런 문제라는 걸 이해했음..
보면 a,b => 단어를 끊는 부분
그렇게 단어를 3개로 자르고
자른 3개를 거꾸로 정렬해줍니다.
그 후에 붙여주고 List에 담아준 다음
sort하고 첫번쨰 인덱스에 담긴 값을 출력하면 정답입니다.
package me.joyeonggyu;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Main{
public static void main(String[] args) throws Exception {
new Main().solution();
}
public void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = br.readLine();
int N = s.length();
List<String> arr = new ArrayList<>();
for(int a=1; a< N ; a++){
for(int b = a+1; b<N; b++){
arr.add(getWord(s, a, b));
}
}
Collections.sort(arr);
bw.write(arr.get(0));
bw.flush();
bw.close();
}
public String getWord(String s, int a, int b){
StringBuilder s1 = new StringBuilder(s.substring(0,a));
StringBuilder s2 = new StringBuilder(s.substring(a,b));
StringBuilder s3 = new StringBuilder(s.substring(b));
StringBuilder sb = new StringBuilder();
sb.append(s1.reverse()).append(s2.reverse()).append(s3.reverse());
return sb.toString();
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준]1312 - 소수 - JAVA (1) | 2023.12.04 |
---|---|
백준 1308 D-day 자바 풀이 (0) | 2023.12.03 |
백준11650 - 좌표정렬 (0) | 2023.12.01 |
[1436]백준 - 영화감독 숌 - JAVA (0) | 2023.11.28 |
[백준7568]- 덩치- JAVA (0) | 2023.11.25 |