https://swexpertacademy.com/main/code/problem/problemDetail.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 설명 : 어느 날 현주는 제곱근 놀이를 만들기로 했는데, 룰은 다음과 같다. - 2이상의 어떤 정수 N이 있다. - N을 N+1로 바꿀 수 있다. - 이 정수일 때, N을 으로 바꿀 수 있다. 게임의 목표는 N을 2로 만드는 것이다. N을 2로 만들기 위해 조작해야 하는 횟수의 최솟값을 구하는 프로그램을 작성하라. |
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
long T;
double N;
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
N = sc.nextLong();
long count = 0;
while (N != 2) {// 2가아닐때까지
// 1. 루트 앤이 정수인지 아닌지 판단하기
double p = Math.sqrt(N);
if ((long) p == p) {
count++;
N = p;
} else {// 루트 정수가 아닐때
long a = (long) (Math.sqrt(N)+1);
long b = a*a;
count = (long) (b-N)+count;
N = b;
}
}
System.out.println("#" + tc + " " + count);
}
}
}
'ALGORITHM > 프로그래머스 | 백준 | 삼성 | 카카오' 카테고리의 다른 글
[프로그래머스] 가장 큰 수 (0) | 2020.05.18 |
---|---|
[SWEA] 6719. 성수의 프로그래밍 강좌 시청 (0) | 2020.05.17 |
[SWEA] 5215. 햄버거 다이어트 (0) | 2020.05.17 |
[백준] 10974번 모든 순열 (0) | 2020.05.17 |
[프로그래머스] 쇠막대기 (0) | 2020.05.11 |