백준 11656 접미사 배열 java 문제풀이
문제: https://www.acmicpc.net/problem/11656
이전에 풀었던 문제를 Java 8 스타일로 다시 풀어 보았다. 스트림은 진짜 재밌고 강력하다. 가독성을 위해 메소드 단위로 줄바꿈 한 것을 고려한다면… 단지 3줄에 풀이가 가능한 것이다!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
IntStream.range(0, input.length())
.boxed()
.map(input::substring)
.sorted()
.forEach(System.out::println);
}
}
.boxed()
이전에 .parallel()
을 추가하고 .forEach()
대신에 .forEachOrdered()
을 사용하면 병렬 계산도 가능하다.
아래는 스트림을 사용하지 않은 풀이
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
List<String> list = new ArrayList<>();
for(int i=0; i<str.length(); i++) {
list.add(str.substring(i));
}
list.sort(String::compareTo);
list.forEach(System.out::println);
}
}
Java 좋아 👍