728x90
반응형

//문제를 보자마자 생각한 코드
class Solution {
public long solution(long n) {
double sqrt = Math.sqrt(n);
if(sqrt == (int)sqrt) {
return (long)Math.pow(sqrt+1, 2);
} else {
return -1;
}
}
}
//더 간단하게 만들어 본 코드
class Solution {
public long solution(long n) {
double sqrt = Math.sqrt(n);
return sqrt == (int)sqrt ? (long)Math.pow(sqrt+1, 2) : -1;
}
}
//다른 사람이 푼 코드
class Solution {
public long solution(long n) {
double i = Math.sqrt(n);
return Math.floor(i) == i ? (long)Math.pow(i+1, 2) : -1;
}
}
Math.floor(i) -> i 를 내림 처리.
i가 정수일 경우 i 그대로, 아닐 경우 i보다 작은 가장 큰 정수를 반환.
그 후 i와 비교, i가 정수일 경우에만 참.
조건을 이렇게 신박하게 줄수도 있구나
한 문제를 여러 가지 방법으로 푸는것도 도움이 많이 되는것 같다.
728x90
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
| [프로그래머스/Java]가장 가까운 같은 글자, 두 개 뽑아서 더하기 (1) | 2023.09.30 |
|---|---|
| [프로그래머스/Java]Comparator와 copyOfRange (0) | 2023.09.30 |
| [프로그래머스/Java] 문자열 내 p와 y의 개수 (0) | 2023.09.11 |
| [프로그래머스/Java] 자연수 뒤집어 배열로 만들기 (0) | 2023.09.07 |
| [프로그래머스/Java] 나머지가 1이 되는 수 찾기 (0) | 2023.09.06 |