알고리즘

[Java] 프로그래머스 세균 증식

개발자 박현준 2023. 1. 31. 20:25
728x90

문제 설명

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

제한사항

  • 1 ≤ n ≤ 10
  • 1 ≤ t ≤ 15

입출력 예

입출력 예 설명

입출력 예 #1

  • 처음엔 2마리, 1시간 후엔 4마리, 2시간 후엔 8마리, ..., 10시간 후엔 2048마리가 됩니다. 따라서 2048을 return합니다.

입출력 예 #2

  • 처음엔 7마리, 1시간 후엔 14마리, 2시간 후엔 28마리, ..., 15시간 후엔 229376마리가 됩니다. 따라서 229,376을 return합니다.

코드 설명

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Solution {
	public int solution(int n, int t) {		
        int answer = 0;
        
        for (int i = 0; i < t; i++) {		
        	answer = n * 2;					
        	n = answer;						
        }
        
        return answer;						
    }
//	public static void main(String[] args) {// Scanner 방식
//		Solution T = new Solution();
//		Scanner sc = new Scanner(System.in);
//		int n = sc.nextInt();
//		int t = sc.nextInt();
//		System.out.println(T.solution(n, t));
//		sc.close();
//	}
	public static void main(String[] args) throws IOException {// BufferedReader 방식
		Solution T = new Solution();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		int t = Integer.parseInt(br.readLine());
		System.out.println(T.solution(n, t));
		br.close();
	}
}

ex) n = 2, t = 5 일 때

 

for (int i = 0; i < t; i++) {         // t 만큼 반복, 0 ~ 4  5번 반복

        answer = n * 2;               // answer = n * 2를 해주고,  2 * 2 = 4, 4 * 2 = 8, 8 * 2 = 16, 16 * 2 = 32, 32 * 2 = 64

        n = answer;                     // n = answer를 저장,  n = 4, n = 8, n = 16, n = 32, n = 64

 }

 

answer = 64

728x90