728x90
반응형
문제
정답 코드
class Solution {
public long solution(long n) {
long answer = 0;
//
answer = -1;
for(long i = 1; i*i <= n ; i++){
if(i*i == n)
answer = (i+1)*(i+1);
}
//
return answer;
}
}
이번에도 n이 long형이라는 점을 고려해서 i를 long형으로 선언해줬습니다.
근데 Math 라이브러리를 활용하면 좀 더 간결하게 작성할 수 있더라고요!
바로 다음과 같습니다!
class Solution {
public long solution(long n) {
long answer = 0;
//
answer = -1;
if (Math.pow((int)Math.sqrt(n), 2) == n) {
answer = (long) Math.pow(Math.sqrt(n) + 1, 2);
}
//
return answer;
}
}
- pow() 메소드는 첫 번째 인자를 두 번째 인자만큼 제곱해줍니다.
- sqrt() 메소드는 인자의 제곱근 값을 반환합니다.
위 코드를 해석해보자면
- n의 제곱근값을 int형으로 형변환
- 1의 값을 제곱한 갓이 n과 같다면
- answer에 n의 제곱근값+1을 제곱한 값을 long형으로 변환하여 할당한다.
sqrt는 제곱근값을 반환해주기 때문에
문제의 조건 중 하나인 양의 정수의 제곱인지도 확인이 가능합니다.
Math 라이브러리를 사용하니 속도와 메모리 면에서도 성능이 좋아집니다!
728x90
반응형
'Computer Science (CS) > 알고리즘' 카테고리의 다른 글
[프로그래머스/Java] 나머지가 1이 되는 수 찾기 (0) | 2023.03.26 |
---|---|
[프로그래머스/Java] 문자열 내 p와 y의 개수 (0) | 2023.03.26 |
[프로그래머스/Java] 자연수 뒤집어 배열로 만들기 (2) | 2023.03.26 |
[프로그래머스/Java] x만큼 간격이 있는 n개의 숫자 (0) | 2023.03.26 |
[프로그래머스/Java] 자릿수 더하기 (0) | 2023.03.24 |