Home [HackerRank] Java Loops II
Post
Cancel

[HackerRank] Java Loops II

[HackerRank] Java Loops II

Ploblem

스크린샷 2020-06-13 오후 5 47 26

스크린샷 2020-06-13 오후 5 47 33

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();
    }
}

Code Repo

Refference

This post is licensed under CC BY 4.0 by the author.

OSX에서 MongoDB 설치하기

[HackerRank] Java String Reverse

Comments powered by Disqus.