[Coding Test] 배열의 부분집합인지 확인
배열의 부분집합 체크
List<Integer> intList= Arrays.stream(base) // IntStream 생성
.boxed() // int를 Integer로 박싱하여 Stream<Integer> 생성
.collect(Collectors.toList()); // List<Integer> 생성
for (int i : sample) { // 향상된 for문 (for-each 루프) 활용해서
//각 요소 차례로 i변수에 할당
if (!intList.contains(i)) { // int List에 i의 요소가 없으면
return false; //false 출력.
}
}
return true; // 무사히 탈출시 true 출력.
정리:
즉, Arrays.stream(base) 메서드를 사용하여 IntStream 객체를 생성하고, boxed() 메서드를 사용하여 int를 Integer로 박싱하여 Stream<Integer> 객체를 생성한다.
그리고 collect(Collectors.toList()) 메서드를 사용하여 List<Integer> 객체를 생성한다.
그 다음으로, for 루프를 사용하여 sample 배열의 모든 요소를 순회하면서 contains 메서드를 사용하여 intList가 sample 배열의 요소를 모두 포함하는지 검사한다. 만약 intList가 sample 배열의 요소를 하나라도 포함하지 않는다면, false를 반환하고, 그렇지 않으면 true를 반환한다.
알고 넘어갈부분
-
향상된 for문(for-each 루프)
for (int i : sample)구문은 향상된for루프, 또는for-each루프라고도 불리며, Java 5부터 지원되는 특별한 종류의for루프이다. 이 구문은sample배열의 각 요소를 순회할 때 사용된다.
ex) 일반적으로 배열 뿐만 아니라 컬렉션 (List, Set, Map 등)과 같은 Iterable 객체에 대해서도 사용될 수 있다. 이 경우에는 int 대신에 해당 객체의 요소 타입을 사용하면 된다. 예를 들어, 아래와 같은 코드는 List<String> 객체의 모든 요소를 출력한다.
List<String> stringList = Arrays.asList("hello", "world", "java");
for (String s : stringList) { // String s 를 통해서 모든 요소에 접근함.
System.out.println(s); // 그 값을 출력함
}
댓글남기기