[HackerRank] Java Loops II
Ploblem
My Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*;
import java.io.*;
import java.lang.Math;
class Solution{
public static void main(String []argh){
Scanner in = new Scanner(System.in);
int t=in.nextInt();
for(int i=0;i<t;i++){
int a = in.nextInt();
int b = in.nextInt();
int n = in.nextInt();
for(int j=1;j<=n;j++) {
int value = a;
for(int k=0;k<j;k++) {
value += Math.pow(2, k) * b;
}
System.out.printf("%d ", value);
}
System.out.println("");
}
in.close();
}
}
Best Solution
- 내가 문제를 보면서 푸는것 말고 더 좋은 방법이 없나 검색해보니 더 좋은 방법이 있었다.
2^0 + 2^1 + ... 2^j = 2^(j+1) - 1
수학 공식을 이용해 푸는 방법인데 저는 재귀함수를 써야하나 loop 한번 더 돌아야할것 같다고만 생각했네요
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution{
public static void main(String []argh){
Scanner in = new Scanner(System.in);
int t=in.nextInt();
StringBuilder sb = new StringBuilder();
for(int i=0;i<t;i++){
int a = in.nextInt();
int b = in.nextInt();
int n = in.nextInt();
sb.setLength(0);
for(int j=0; j<n; ++j) {
// 2^0 + 2^1 + ... 2^j = 2^(j+1) - 1
sb.append((int) (a + b*(Math.pow(2, j+1) - 1))).append(" ");
}
System.out.println(sb.toString());
}
in.close();
}
}
Comments powered by Disqus.