2023. 10. 26. 15:29
문제를 읽어보면, 차집합을 구하는 문제이다.
전체 U, 과제를 낸 집단을 A 라 했을 때,
U - A 를 구하는 문제.
Stream 을 잘 다룰줄 몰라서, 챗 GPT 에게 물어보았다.
- 스트림 API와의 호환성: 스트림 API는 기본 자료형(primitive types)에 대한 연산을 수행할 수 있도록 여러 메소드를 제공합니다. 그러나 배열을 스트림으로 변환할 때 기본 자료형 배열은 직접적으로 스트림으로 변환할 수 없습니다. 따라서 boxed()를 사용하여 기본 자료형을 래퍼 클래스로 변환하면 스트림 API를 활용할 수 있습니다.
package org.example;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] submitted = new int[28];
int[] all = new int[30];
for (int counter = 0; counter < 28; counter++) {
submitted[counter] = sc.nextInt();
}
for (int counter = 0; counter < 30; counter++) {
all[counter] = counter + 1;
}
List<Integer> allList = Arrays.stream(all)
.boxed()
.collect(Collectors.toList());
List<Integer> difference = new ArrayList<>(allList);
difference.removeAll(Arrays.stream(submitted)
.boxed()
.collect(Collectors.toList()));
for (int print : difference) {
System.out.println("x: " + print);
}
}
}
List<Integer> allList = ...
Arrays.stream(all) 은 int[] 타입의 all 을 스트림으로 변환한다.
컬렉션API 를 사용하려면, Primitive 타입은 다룰수가 없기에 Wrapper Class 로 변환해준다.
이것을 박싱이라고 표현한다.
그 것을 처리해주는 메서드가 boxed()이다.
List<Integer> difference = ...
Arrays.stream(submitted) 는 int[] 타입 submitted 를 스트림으로 변환한다.
그다음 래퍼클래스로 박싱해준다.
마지막으로 difference (all) 에서 removeAll() 을 사용하여, 괄호안의 요소를 제거할 수 있다.
'AREA(지속적인 일상) > 02_백준' 카테고리의 다른 글
[백준] - 10811 - 바구니 뒤집기 (0) | 2023.10.27 |
---|---|
[백준] - 10813 - 공바꾸기 (1) | 2023.10.27 |
[백준] - 10810 - 공 넣기 (0) | 2023.10.26 |
[백준] - 10807 - 개수 세기 (0) | 2023.10.25 |
[백준] - 단계별 문제 풀기 현황 (0) | 2023.10.23 |