22.4.16 [HackerRank]Java Loops II
13513 단어 JavaMath.pow()hackerrankloopJava
✏️ 풀이
import java.util.*;
import java.io.*;
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();
int result = a;
for(int j=0; j<n; j++){
result += Math.pow(2,j) * b;
System.out.printf("%d ", result);
}
System.out.printf("%n");
}
in.close();
}
}
🌱 배경지식
- 거듭제곱 구하기: Math.pow()
이 method는 입력값과 출력값이 모두 실수를 표현할 수 있는 double형이며,
Math.pow(대상 숫자, 지수)의 형태로 입력해 주면 된다.
Math 클래스가 제공하는 클래스는 전부 Static 하기 떄문에 객체를
생성하지 않고도 바로 생성이 가능하다.
public class Pow{
public static void main(String[] args) {
double result = Math.pow(5, 2); //5의 제곱
System.out.println("5의 제곱은: " +result);
}
}
- 실수 표현 자료형 float과 double의 차이
float은 4바이트, double은 8바이트다. 이 차이에 걸맞게 정밀도(precision)도 double이 더 높다. 정수형에 비해 실수형은 정밀도가 떨어지는 문제가 있다.
✅ 해설 및 분석
이전 문제들과 다르게 수식이 늘어나서 매우 당황했던 문제다.
정수 a,b,n의 형식으로 위의 수식이 구성되며, q 쿼리가 주어진다.
output은 각 쿼리가 하나의 줄에 표시되며,
각 쿼리에 대해 single line에 n개의 공백으로 분리된 형태로 출력되게 만들어야 한다.
import java.util.*;
import java.io.*;
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();
int result = a; // 쿼리 수를 나타내는 정수 a를 result로 받는다.
for(int j=0; j<n; j++){
result += Math.pow(2,j) * b; // a로 받은 result 값에 2의 j제곱 x b의 형태로 나타내야 한다.
//이때 n-1까지만 나타내면 되므로 j<n의 제약을 주어 하나씩 증가시킨다.
System.out.printf("%d ", result); // 그간 풀어왔던 문제들과 마찬가지로 result값을 integer를 출력할 수 있는 %d에 담아 프린트해주면 된다.
//처음에 %d 뒤에 공백을 넣어주지 않아 오류가 났는데, 문제에서 n개의 공백으로 분리된 형태로 출력하라고 했으므로
//""안에 공백까지 포함하여 넣어주어야 한다.
}
System.out.printf("%n"); // 각 쿼리는 single line에 맞춰 출력되어야 하므로 개행처리를 해준다.
}
in.close();
}
}
👉 참고
Author And Source
이 문제에 관하여(22.4.16 [HackerRank]Java Loops II), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@apolontes/22.4.16-HackerRankJava-Loops-II저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)