(TIL) 20220313

2022. 3. 14. 00:10TIL(Today I learned)

반응형

🏴󠁩󠁤󠁪󠁷󠁿Facts(한 것)


  • 알고리즘 문제 풀기(Java, 파이썬)
  • Java 함수형 인터페이스 공부
  • 프로그래머의 뇌 독서
  • 네트워크 공부
  • 운동하기

 

🏴󠁩󠁤󠁪󠁷󠁿Findings(배운 것)


백준에서 풀었던 문제들을 다시 풀고있다.

같은 문제를 파이썬과 자바 두개로 풀고 있는데 요즘 자바 8버전 이상에 도입된 stream과 함수형 인터페이스에 대해서 공부하고 있기에,

이 방법으로 문제를 풀었다.

 

백준 1181번, 단어 정렬 문제를 풀었고, Java 8버전 이상에서는 stream을 통해서 set도 정렬이 가능하다! (ㄹㅈㄷ)

 

또한 Compartor를 통해서 custom 정렬이 가능한데, 이후에 Comparator와 Comparable의 차이점에 대해서도 포스팅 해야겠다.

 

코드를 보자면,

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        Set<String> set = new HashSet<>();
        while(n-->0) {
            set.add(scanner.next());
        }
        set.stream()
                .sorted(Comparator.comparingInt(String::length)
                        .thenComparing(Comparator.naturalOrder()))
                .forEach(System.out::println);

    }
}

 

이렇게 stream을 통해서 순차적인 흐름을 만들어내어, sorted로 정렬을 하고, Comparator를 통해서 문자열을 비교하는데, 

이때 Comparator에 딸린 수 많은 메서드 중 Int형을 비교할 수 있는 comparingInt 메서드를 활용하여 문자열의 길이를 비교할 수 있다.

 

그리고 비교한 것을 길이의 오름차순으로 정렬하여 이를 forEach를 통해 출력할 수 있다!

 

정말 아름다운 코드다...

 

🏴󠁩󠁤󠁪󠁷󠁿Feeling(느낀 점)


자바 8버전이 더욱 궁금해졌다.

인프런 강의 들으면서 열심히 공부해야지

 

 

🏴󠁩󠁤󠁪󠁷󠁿Affirmation(자기선언)


  • 매일 알고리즘 문제 1문제 이상 풀기
  • 수업 공부한 것은 일주일 내에 포스팅하기
  • 자바 8버전에 익숙해지기

 

🏴󠁩󠁤󠁪󠁷󠁿여담


 
반응형