-
[프로그래머] 정수 제곱근 판별프로그래머스 2025. 3. 19. 09:42
JAVA
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12934
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입력한 값이 어떤 제곱의수인지 판별하기 위해 체크하는 것으로 참이면 어떤 제곱의수 +1 하고 제곱한 수를 출력한다.
아니면 -1을 반환한다.
ex) 121은 11의 제곱수 이므로 11+1 =12, 12의 제곱은 144이다.
3이면 제곱수가 아니르모 -1을 반환한다.ODE
풀이
java에서는 Math라는 클래스를 지원한다.
주목해야 할것 은 Math.sqrt인데, 루트(√n)가 있다. √n 는 ( √ (n^2) == k(0이 아닌 정수) )을하면 정수가 된다. 121을 루트에넣었을때 소수점 아닌 수가 아닌 정수가 나와야 한다.
다른 해답에서는 Math.pow()과 사용하여, √ (n)값을 한 뒤 2제곱 하여 입력값 n이 나온다면 참 아니면 -1을 반환하는 방법이 있다.
참고. √n은 반환형이 double (실수형)이므로 캐스팅이 필요하다.
CODE
public long solution(long n) { long answer = 0; if(Math.sqrt(n)%1 ==0){ answer = (long) Math.sqrt(n); answer = (answer + 1) * (answer + 1); }else{ answer = -1; } return answer; }public long solution1(long n) { long answer = 0; if(Math.pow(Math.sqrt(n) ,2) == n){ answer =(long) Math.pow(Math.sqrt(n) + 1 ,2); }else { answer =1; } return answer; }'프로그래머스' 카테고리의 다른 글
[프로그래머스] 정수 내림차순으로 배치하기 (0) 2025.03.20 [프로그래머스] 가격이 제일 비싼 식품의 정보 출력하기 (0) 2025.03.19 [프로그래머스]흉부외과 또는 일반외과 의사 목록 출력하기 (0) 2025.03.18 [프로그래머스]자연수 뒤집어 배열로 만들기 (0) 2025.03.18 [프로그래머스] DATETIME에서 DATE로 형 변환 (0) 2025.03.17
