HackerRank~Java Loop2
해커랭크-자바 루프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
으로 한 줄씩 출력합니다.