세균 증식
https://school.programmers.co.kr/learn/courses/30/lessons/120910
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1) 문제
처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.
1 ≤ n ≤ 10
1 ≤ t ≤ 15
2) 예시
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문 사용에 헷갈렸었습니다.
'Programmers Coding Test > Java' 카테고리의 다른 글
[프로그래머스 120906] Java - 코딩테스트 입문 / 자릿수 더하기 (0) | 2024.02.18 |
---|---|
[프로그래머스 120889] Java - 코딩테스트 입문 / 삼각형의 완성조건 (1) (0) | 2024.02.18 |
[프로그래머스 120852] Java - 코딩테스트 입문 / 소인수분해 (1) | 2024.02.18 |
[프로그래머스 120903] Java - 코딩테스트 입문 / 배열의 유사도 (0) | 2024.02.18 |
[프로그래머스 120851] Java - 코딩테스트 입문 / 숨어있는 숫자의 덧셈 (1) (1) | 2024.02.18 |