문제 :
1~X까지의 거듭제곱 수열이 있고,
이 거듭제곱 수열이
1,4,8,9,16 .... 각 제곱의 크기만큼 나열 되어있다.
N(1<= N <= 1000) 이란 수가 주어졌을 때
N번째 거듭제곱이 무엇인지 구하라
테스트케이스 :
입력 : 1
출력 : 1
입력 : 3
출력 : 8
입력 : 5
출력 : 16
import java.util.*;
public class FindPower {
public static void main(String[] args) {
long start = System.nanoTime();
Random random = new Random();
int n = random.nextInt(10000)+1; // 1부터 10,000까지 랜덤한 수
System.out.println(n);
long sum = 0;
// 중복 없이 순서대로 저장할 수 있는 TreeSet
TreeSet<Integer> ts = new TreeSet<Integer>();
for(int i=1; i<=n; i++){
for(int j=2; j<=n; j++){
double a = (double)Math.pow(i,j);
ts.add((int) a);
}
}
// TreeSet을 리스트로 바꿔서 N번째 인덱스 출력 준비
List<Integer> sorted = new ArrayList<>(ts);
long end= System.nanoTime();
System.out.println("실행 시간: " + (end - start)/1000000 + "ms");
// 인덱스는 0부터 시작이므로 N-1
System.out.println(sorted.get(n-1));
}
}
'공부 > 코딩 테스트' 카테고리의 다른 글
[Java] LeetCode 20. Valid Parentheses (0) | 2025.04.03 |
---|---|
[Java] Long의 바이너리 값 팰린드롬 구하기 (0) | 2025.04.02 |
[Java] 백준 15964 이상한 기호 (0) | 2025.03.30 |
[Java] 백준 10807번 : 개수 세기 (2) | 2025.03.29 |
[Java] 백준 10871번 : X보다 작은 수 (0) | 2025.03.29 |