코딩테스트/HackerRank

HackerRank~Java Loop2

NANCEEE 2023. 6. 16. 01:52
반응형

해커랭크-자바 루프2: https://www.hackerrank.com/challenges/java-loops/problem?isFullScreen=true

 

Java Loops II | HackerRank

Use loops to find sum of a series.

www.hackerrank.com

문제 설명
q횟수만큼 a, b, n을 입력받고 아래처럼 출력을 한다.

제한 사항

  • 0 <= q <= 500
  • 0 <= a, b <=50
  • 1 <= n <=15

입출력 예

Input
첫번째 줄엔 쿼리 수인 정수 q가 입력됩니다.
다음 줄 부터는 q만큼 a b n을 입력합니다.

2 
0 2 10
5 3 5

Output

2 6 14 30 62 126 254 510 1022 2046
8 14 26 50 98

풀이

import java.util.Scanner;

public class post {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String q = scanner.nextLine();

        int tmpInt = Integer.parseInt(q);
        String[] answer = new String[tmpInt];
        for (int i = 0; i < tmpInt; i++){
            String str = scanner.nextLine();

            String[] arr = new String[3];
            arr = str.split(" ");
            int a = Integer.parseInt(arr[0]);
            int b = Integer.parseInt(arr[1]);
            int n = Integer.parseInt(arr[2]);

            String resultStr = "";
            int resultInt = a;

            for(int j=0; j<n; j++){
                resultInt = resultInt + (int)Math.pow(2, j)*b;
                resultStr = resultStr + String.valueOf(resultInt) + " ";
            }
            answer[i] = resultStr;
        }

        for(int k = 0; k < tmpInt; k++){
            System.out.println(answer[k]);
        }
        scanner.close();
    }
}

최초에 String q = scanner.nextLine();에서 q를 입력받습니다.
q는 문자열로 입력을 받았기 때문에 int tmpInt = Integer.parseInt(q);로 int로 변환합니다.

이 int만큼 for문을 돌려for (int i = 0; i < tmpInt; i++), q의 횟수만큼 a b n의 정보가 담긴 라인String str = scanner.nextLine();을 입력 받습니다.

입력받은 문자열은 각각 a b n의 정보로 전환하기 위해 문자열을 잘라내고 변수에 담아 냅니다.

String[] arr = new String[3];
arr = str.split(" ");
int a = Integer.parseInt(arr[0]);
int b = Integer.parseInt(arr[1]);
int n = Integer.parseInt(arr[2]);

문제에서 주어진 공식은 아래와 같이 구성됩니다.

Math.pow는 제곱을 구하는 함수로 자세한 설명은 아래의 게시물을 참고하시길 바랍니다.
https://labfor310.tistory.com/13

 

Java~Math를 이용한 제곱, 제곱근

Math.pow()를 이용한 제곱 구하기 Math.pow(x, y) : x의 y승 결과값으로 double을 반환합니다. double test = Math.pow(2, 3); // -> 8.0 Math.sqrt()를 이용한 제곱근 구하기 Math.sqrt(x) : x의 제곱근 결과값으로 double을 반

labfor310.tistory.com

이렇게 연산한 결과를 answer행렬에 담아내어 마지막으로 System.out.println으로 한 줄씩 출력합니다.

반응형