새소식

Programmers Coding Test/Java

[프로그래머스 120910] Java - 코딩테스트 입문 / 세균 증식

  • -

 

 

세균 증식

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120910

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

1)  문제

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

 

 

2)  예시

 

 

Result Table
n t result
2 10 2048
7 15 229,376

 

 

 

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


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

 

 

 

 

 

 

3)  풀이

 

 

1. 클래스 선언을 해줍니다

● class Solution {

클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.

 

 

 

 

2. 정수 n과 t를 매개변수로 하는 solution 메소드를 선언합니다.

solution은 정수를 반환하므로 데이터타입을 int로 합니다.

●   public int solution(int n, int t) {

 

 

 

 

3. 제한사항을 확인하고, 만족하지 않을 경우 예외처리합니다.

●     if(1 > n || n > 10 || 1 > t || t > 15){
            throw new IllegalArgumentException("제한사항을 확인하세요");
        }
        

 

 

 

4. while 반복문을 이용하여, t시간이 0이 될 때까지 반복해서 -1시간씩 해주고, n값을 두배로 늘려주면 됩니다.

   int answer = n;
        while(t != 0){
            t--;
            answer *= 2;
        }
        return answer;
    }
}


 

 

 

 

 

 

4)  코드

 

class Solution {
    public int solution(int n, int t) {
        if(1 > n || n > 10 || 1 > t || t > 15){
            throw new IllegalArgumentException("제한사항을 확인하세요");
        }
        
        int answer = n;
        while(t != 0){
            t--;
            answer *= 2;
        }
        return answer;
    }
}

 

 

 

 

 

 

 

5)  느낀점

while로 t가 0이 아닐 때 계속 반복되게 해야하는데, t가 0일 때로 조건을 잘못 거는 실수를 하여  자꾸 값이 n만 나왔지만,

금새 찾아내어 해결했습니다.

if문으로 true일 때 조건을 실행하는 것에 익숙하다보니 while문 사용에 헷갈렸었습니다.

 

 

 

 

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.