최근 코딩테스트 준비 겸 알고리즘 공부를 하기 위해 새로운 교재를 사서 학습을 시작했다.
개발자 취업, 이직 등 질문을 주고 받을 수 있는 오픈채팅에 가입을 했는데 거기에서 추천 받은 책이 있다.
https://product.kyobobook.co.kr/detail/S000212576322
처음으로 다루는 내용은 배열에 관한 내용이었다.
더 빠른 시간 내에 구현하기 위해서 자바 API를 사용하였는데 01번, 02번 문제를 풀면서 사용된 메소드들을 정리해보려고 한다.
1. Arrays.stream(arr).boxed()
여기에서 boxed()는 IntStream 같이 원시 타입에 대한 스트림 지원을 클래스 타입으로 전환해준다. (IntStream -> Stream<Integer>)
int 자체로는 Collection에 담을 수 없기 때문에 Integer 클래스로 변환하여 List<Integer>로 담기 위한 기능을 수행하기 위해 존재한다.
2. distinct()
중복을 제거하는 메소드이고 1번에 설명한 boxed() 뒤에 사용되어 배열에서 중복을 제거하기 위하여 사용하였다.
3. Arrays.sort(result, Collections.reverseOrder())
내림차순 정렬을 위하여 Collections.reverseOrder()를 사용하였다.
그냥 sort()만 하면 오름차순 정렬이 된다.
4. Arrays.stream(result).mapToInt(Integer::intValue).toArray()
Stream을 IntStream으로 변환해주는 메소드이다.
Integer::intValue는 int 배열로 변경해주는 것이다.
리스트를 모두 int 타입으로 바꿔서 int[] 배열로 반환시킬 수 있다.
5. TreeSet
스트림 없이 구현할 때는 TreeSet을 이용하여 정렬과 중복 제거를 동시에 할 수 있다.
TreeSet도 내림차순 정렬을 하고 싶으면
TreeSet<Integer> set = new TreeSet<>(Collection.reverseOrder())
을 사용하면 된다.
set.pollFirst()
제일 낮은 객체를 꺼내고 컬렉션에서 제거하는 메소드이다.
평소 프로젝트를 진행할 때에는 복잡한 알고리즘이 필요한 경우가 별로 없어서 생소한 것들도 발견하고는 했는데, 이 교재를 다 학습한 뒤에는 더 많은 것이 머릿속에 남아 잘 적용할 수 있었으면 좋겠다.
'학습' 카테고리의 다른 글
[문법] HashMap 사용하기 (0) | 2024.07.30 |
---|---|
[Java] JPA 강의 - 8 (프록시와 연관관계 관리) (0) | 2024.02.15 |
[Java] JPA 강의 - 7 (고급 매핑) (1) | 2024.02.05 |
[Java] JPA 강의 - 6 (다양한 연관관계 매핑) (0) | 2024.01.29 |
[Java] JPA 강의 - 5 (연관관계 매핑 기초) (0) | 2024.01.18 |