728x90
문제 설명
어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 10
- 1 ≤ t ≤ 15
입출력 예
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합니다.
[ 풀이 1 ]
1
2
3
4
5
6
7
|
class Solution {
public int solution(int n, int t) {
int answer = n;
while(t-->0) answer *= 2 ;
return answer;
}
}
|
t를 1개씩 감소하면서 2를 곱해주면 됩니다. |
[ 풀이 2 ]
1
2
3
4
5
|
class Solution {
public int solution(int n, int t) {
return n * (int)Math.pow(2,t);
}
}
|
결국 2의 t승을 곱해주면 됩니다. 누승을 구하는 Math.pow()메서드를 이용해도 되는데 이 메서드의 반환값이 double이므로 int로 형변환해서 곱해주면 됩니다. |
[ 풀이 3 ]
1
2
3
4
5
|
class Solution {
public int solution(int n, int t) {
return n << t;
}
}
|
Shift 연산자를 이용하면 아주 간단하게 풀어집니다. n >> m 은 n / 2의 m승이되고 n << m 은 n * 2의 m승이됩니다. 즉, n << t는 n * 2의 t승으로 원하는 결과가 됩니다. |

728x90
'프로그래머스 코딩(자바) > Level 0' 카테고리의 다른 글
Programmers Level 0 - 직각삼각형 출력하기 (0) | 2023.03.02 |
---|---|
Programmers Level 0 - 문자열 정렬하기 (1) (0) | 2023.03.02 |
Programmers Level 0 - 암호 해독 (0) | 2023.03.02 |
Programmers Level 0 - 대문자와 소문자 (0) | 2023.03.02 |
Programmers Level 0 - 가위 바위 보 (0) | 2023.03.02 |