728x90
반응형
- 문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
- 제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.
-나의 풀이
class Solution {
public long solution(long n) {
long answer = 0;
while(answer * answer < n){
answer++;
}
if(answer * answer == n){
answer++;
answer*=answer;
}else{
answer = -1;
}
return answer;
}
}
n이 어떤 수의 제곱인지 알기 위해 필자는 while문을 통해 answer이 n보다 커지거나 같아질 때까지 돌린 후,
answer이 n과 같은지 비교를 해서 n과 같다면, 양의 정수이므로 answer에 +1을 해준 후에 제곱을 하여 return하고,
answer이 n과 같지 않다면, 양의 정수가 아니므로 answer에 -1 을 대입 해준 후에 return해주는 코드를 작성하였다.
-다른사람의 풀이
class Solution {
public long solution(long n) {
if (Math.pow((int)Math.sqrt(n), 2) == n) {
return (long) Math.pow(Math.sqrt(n) + 1, 2);
}
return -1;
}
}
필자와 다르게 Math를 이용해서 문제를 풀이 하였다. n의 제곱근(Math.sqrt())을 제곱(Math.pow())하여 n과 같다면, n+1을 제곱하여 return하고 n 과 같지 않다면 -1을 리턴하는 코드를 작성하였다. Math를 사용해서 코드를 작성하니, 확실히 코드도 더 간결하고, 보기도 쉬운 것 같다.
문제를 풀 때, 쉽다는 생각을 하고 코드를 작성해 나가지만 문제를 풀고 다른 사람의 풀이를 보면, 항상 많은 걸 깨닫는다. 요즘은 다른사람의 코드를 보는게 더 재밋는거 같다. 노력하자 ㅠ
728x90
반응형
'Algorithm > Programmers' 카테고리의 다른 글
프로그래머스[Level 1] - 평균 구하기 (java) (0) | 2022.09.15 |
---|---|
프로그래머스[Level 1] - 자릿수 더하기 (java) (0) | 2022.09.15 |
프로그래머스[Level 1] - 나머지가 1이 되는 수 찾기 (java) (0) | 2022.09.14 |
프로그래머스[Level 1] - 직사각형 별 찍기 (java) (0) | 2022.09.13 |