[Java/프래그래머스] 음양 더하기 - 람다식과 스트림으로 풀기

김하밍·2024년 6월 23일

알고리즘

목록 보기
21/22

문제

프로그래머스: 음양 더하기

문제 파악하기

signs[i] 가 true 이면, 합산을 누적할 int형 변수에 absolutes[i]를 더하고, signs[i]가 false 이면, absolutes[i]를 빼는 로직을 만들어야 합니다.

사용된 스트림 API 메서드

  • IntStream.range(int startInclusive, int endExclusive)
    • 시작 값 포함, 끝 값 제외
  • map(IntUnaryOperator mapper):
    • 스트림의 각 요소에 주어진 함수를 적용하여 새로운 스트림을 반환
    • IntUnaryOperator 는 정수를 입력받아 정수를 반환하는 함수형 인터페이스

제출한 코드

import java.util.stream.IntStream;

public int solution(int[] absolutes, boolean[] signs) {
    return IntStream.range(0, absolutes.length)
                    .map(i -> signs[i] ? absolutes[i] : -absolutes[i])
                    .sum();
}

코드 풀이

int타입을 반환할 것이기 때문에 IntStream으로 시작하면 변수없이 반환할 수 있습니다.

  1. IntStream.range(0, absolutes.length)0부터 absolutes.length 이전까지의 인덱스를 스트림으로 생성합니다.
  2. map(i -> signs[i] ? absolutes[i] : -absolutes[i]) 는 각 인덱스 i에 대해 signs[i]가 true이면 absolutes[i]를 반환하고, false이면 -absolutes[i]를 반환합니다.
  3. sum() 은 변환된 스트림의 모든 요소를 합산하여 결과를 반환합니다.
profile
나만의 언어로 기록하며 성장하기 !

0개의 댓글