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

greenTea·2023년 5월 14일
0

코드

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {


        return  IntStream.rangeClosed(0,signs.length-1).map(i -> {
            return !signs[i] ? -absolutes[i]: absolutes[i];
        }).sum();
    }
}

문제자체는 레벨1로 아주 쉽다. 그러나 stream을 연습하기 위해 문제를 풀어보았다.

풀이

IntStream.rangeClosed(0,signs.length-1)를 통해 0부터 sings의 크기만큼의 숫자 스트림을 생성한다. 그 다음 map을 통해 각 객체를 -,+로 변경해준다. 이후 sum()함수를 통해 총합을 반환하면 끝이난다.

IntStreamStream<Integer>

stream의 경우 내부의 변수는 final로 간주되기 때문에 변하지 않는 값만을 이용할 수 있다. 만약에 동적인 값을 이용하고 싶다면 AtomicInteger를 이용하면 된다.
또한 IntStreamStream<Integer>는 다른 스트림인 것을 인지해야 한다.

IntStreamint를 이용하여 만든 스트림으로 객체가 아니다. 또한 IntStream만의 특수 기능을 이용할 수 있다.
반대로 Stream<Integer>는 객체를 이용하는 스트림으로 IntStream이 사용할 수 있는 특수 기능들을 사용 할 수 없다.

출처 : 프로그래머스 알고리즘

profile
greenTea입니다.

0개의 댓글