정보처리기사 실기JavaJava - Stream reduce난이도 3SHORT_ANSWER

정보처리기사 실기 Java - Stream reduce 기출문제 #1211

문제

다음 Java 코드의 실행 결과를 쓰시오.

Java
import java.util.*; import java.util.stream.*; public class Main { public static void main(String[] args) { List<String> words = Arrays.asList("apple", "banana", "cherry", "date"); Optional<String> result = words.stream() .filter(s -> s.length() > 4) .map(s -> s.substring(0, 2).toUpperCase() + s.substring(2)) .reduce((s1, s2) -> s1.charAt(0) > s2.charAt(0) ? s1 : s2); System.out.println(result.orElse("NONE")); } }

정답

CHerry

CHerry

해설

  1. words = ["apple", "banana", "cherry", "date"]
  2. filter(s -> s.length() > 4): 길이가 4보다 큰 문자열만 필터링 → ["apple", "banana", "cherry"]
  3. map 연산: 각 문자열의 앞 2글자를 대문자로, 나머지는 그대로
    • "apple" → "APple"
    • "banana" → "BAnana"
    • "cherry" → "CHerry"
  4. reduce((s1, s2) -> s1.charAt(0) > s2.charAt(0) ? s1 : s2): 첫 번째 문자의 ASCII 값이 더 큰 문자열을 선택
    • "APple" vs "BAnana": 'A'(65) < 'B'(66) → "BAnana" 선택
    • "BAnana" vs "CHerry": 'B'(66) < 'C'(67) → "CHerry" 선택
  5. 최종 결과: "CHerry"

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.