문제: 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);
    }
}

 

No image

Java 좋아 👍