극동대학교\AI컴퓨터공학과\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 메서드는 스트림의 원소들을 하나씩 소모해가며, 누적 계산을 수행하고 결과값을 리턴하는 메서드이다.