[프로그래머스][자바(JAVA)] 정수 제곱근 판별 -모두의개발
2022. 9. 11. 19:14ㆍ알고리즘/프로그래머스
※ 요약
- n에 대하여 x가 양의 정수이며 제곱일경우 x+1 제곱을 구하고 정수가 아닐 경우 -1을 리턴하는 문제
- 풀이1 (for문 if문 이용하기)
1. answer을 -1로 정의 해준다
2. 1~n값만큼 반복해준다
3. i * i == n 인 if문을 정의 해줘 맞을경우 answer = (i+1)*(i+1) 정의해주고 break문을 실행시킨다
※ 주의 int형이 아닌 long 으로 해줘야 된다

<정답코드1>
class Solution {
public long solution(long n) {
long answer = -1; //양의정수가 아니면 -1
for(long i = 1; i<=n; i++){ //1~n까지 반복
if(i * i == n){
answer = (i+1)*(i+1); // i*i==n 일경우 i+1의 제곱
break;
}
}
return answer;
}
}
- 풀이2 (Math.sqrt() 함수 이용하기)
※ Math.sprt()는 제곱근을 반환해주는 함수이다
1. answer을 -1로 정의 해준다
2. Math.sprt()함수를 이용해 n의 제곱근을 long형으로 변환해 sqrRt에 정의해준다
3. sqrRt 제곱이 n과 같다면 sqrRt+1의 제곱을 answer에 정의
※ 주의 마찬가지로 int형이 아닌 long 으로 해줘야 된다

<정답코드2>
class Solution {
public long solution(long n) {
long answer = -1; //양의정수가 아니면 -1
long sqrRt = (long)Math.sqrt(n);// n의 제곱근을 long형으로
//반환해 sqrRt에 정의
if (sqrRt * sqrRt == n) { //sqrRt의 제곱이 n과 같다면
answer = (sqrRt + 1) * (sqrRt + 1); //sqrRt+1의 제곱을 answer에 정의
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][자바(JAVA)] 자연수 뒤집어 배열로 만들기 -모두의개발 (0) | 2022.09.12 |
---|---|
[프로그래머스][자바(JAVA)] 평균 구하기-모두의개발 (0) | 2022.09.11 |
[프로그래머스][자바(JAVA)] 약수의 합-모두의개발 (0) | 2022.09.10 |
[프로그래머스][자바(JAVA)] 자릿수 더하기-모두의개발 (2) | 2022.09.10 |
[프로그래머스][자바(JAVA)] 나머지가 1이 되는 수 찾기 -모두의개발 (0) | 2022.09.09 |