728x90
문제
https://www.acmicpc.net/problem/1251
주어진 문자열을 세 부분으로 나누고, 각 부분을 뒤집은 후 합친 문자열 중에서 사전순으로 가장 앞서는 문자열을 찾는 문제입니다.
접근 방법
문자를 입력 받고, 세 부분으로 문자를 나누어 각 부분을 뒤집고, 뒤집은 세 단어를 합쳐 출력
구현
- 문자열 합치기:
- 뒤집은 세 부분을 합쳐 새로운 문자열을 만듭니다.
- 이 문자열을 리스트에 추가합니다.
- 사전순 비교와 출력:
- 모든 가능한 문자열을 리스트에 추가한 후, Collections.sort()를 사용하여 사전순으로 정렬합니다.
- 정렬된 리스트의 첫 번째 요소를 출력합니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
ArrayList<String> wordList = new ArrayList<>();
for(int i = 1; i < input.length() - 1; i++) {
for (int j = i + 1; j < input.length(); j++) {
String word1 = new StringBuilder(input.substring(0, i)).reverse().toString();
String word2 = new StringBuilder(input.substring(i, j)).reverse().toString();
String word3 = new StringBuilder(input.substring(j)).reverse().toString();
String combined = word1 + word2 + word3;
wordList.add(combined);
}
}
Collections.sort(wordList);
System.out.println(wordList.get(0));
}
}
메모리:17332kb 시간:196ms
728x90
'IT 개발 관련 > [Algorithm]' 카테고리의 다른 글
[백준] 16926번 : 배열 돌리기 1 - Java (0) | 2024.08.01 |
---|---|
[백준] 2501번 : 약수 구하기 - Java (0) | 2024.06.23 |
[백준] 18352번 : 특정 거리의 도시 찾기 - Java (0) | 2024.06.21 |
[백준] 1193번 : 분수찾기 - Java (0) | 2024.06.20 |
[백준] 2477번 : 참외밭 - Java (0) | 2024.06.19 |