JAVA/프로그래머스 코딩테스트 입문

[프로그래머스, 입문] 세균 증식

sundori 2024. 6. 14. 22:18

목차

문제 설명

어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

 

import java.util.stream.IntStream;

class Solution {
    public int solution(int n, int t) {
        int[] count = { n };
        
        IntStream.rangeClosed(1, t)
                 .forEach(hour -> count[0] *= 2);
        
        return count[0];
    }
}

------------------------------------------------------------
import java.util.stream.IntStream;

class Solution {
    public int solution(int n, int t) {
        return IntStream.rangeClosed(1, t)
                        .reduce(n, (count, hour) -> count * 2);
    }
}

IntStream.rangeClosed(1, t)는 1 부터 t까지의 정수 범위를 정하는데 이번 코드에서는 시간을 의미한다.

reduce(n, (count, hour) -> count * 2)는 초기 값 n에서  각 시간마다 세균의 수를 계산한다.

reduce 메서드는 스트림의 원소들을 하나씩 소모해가며, 누적 계산을 수행하고 결과값을 리턴하는 메서드이다.