https://www.acmicpc.net/problem/1251
[정답 코드]
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
String left = "";
String mid = "";
String right = "";
ArrayList<String> list = new ArrayList<>();
for (int i = 1; i < input.length() - 1; i++) {
left = input.substring(0, i);
for (int j = i + 1; j < input.length(); j++) {
String tmp = new String();
mid = input.substring(i, j);
right = input.substring(j);
tmp += backward(left);
tmp += backward(mid);
tmp += backward(right);
list.add(tmp);
}
}
Collections.sort(list);
System.out.println(list.get(0));
}
static String backward(String word) {
String tmp = "";
for (int i = word.length() - 1; i >= 0; i--) {
tmp += word.charAt(i);
}
return tmp;
}
}
[알고리즘]
- 부르트포스 알고리즘
- 문자열
[풀이]
1. 이중 for문을 돌며 String.substring()을 활용해 left, mid, right의 3단어로 나눈다.
2. 문자열을 거꾸로 치환시키는 메서드 backward로 만들어 새 문자열을 만든다.
3. 새로 만든 문자열을 ArrayList에 추가한다.
4. Collections.sort() 메서드를 활용해 사전순으로 정렬한다.
5. list의 맨 앞 문자열을 출력한다.
이 방법이외에도 StringBuilder 를 활용하면 Stringbuilder에 자체적으로 문자열을 뒤집는 Stringbuilder.reverse()를 활용하면 더 간단하게 풀 수 있다.
'코딩테스트' 카테고리의 다른 글
백준 1543: 문서 검색[JAVA] (0) | 2024.04.09 |
---|---|
백준 1436: 영화감독 숌[JAVA] (0) | 2024.04.09 |
백준 4179: 불![JAVA] (0) | 2024.04.04 |
백준 2110번: 공유기 설치[JAVA] (1) | 2024.04.04 |
백준 1987번: 알파벳[JAVA] (1) | 2024.04.03 |