<문제 제시>
<문제설명>
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다.
정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를
return하도록 solution 함수를 완성해주세요.
<예시 입출력>
<문제 해결 과정>
어떤 수의 제곱인지를 판별하는 문제이다. 어떤 수를 제곱하여 결과값을 구하는 것이 아닌 반대의 경우이기때문에
1부터 증가시키며 나눠질때까지 반복해야하는 것이 아닐까 생각도 했다.
while(s_num < n) {
s_num = i * i;
// ...
i++;
}
처럼 n보다 작을때가지 반복하여 주어진 제곱 값이 나올 수 있도록 i를 하나씩 증가시키며 값을 찾았다.
s_num == n 이게되면 정확한 제곱수이므로 break로 빠져나가고, answer를 반환한다.
<전체코드>
public class Is_square_num {
public static int solution(int n) {
int answer = 0;
int i = 1;
int s_num = 0;
while(s_num < n) {
s_num = i * i;
if(s_num == n) {
System.out.println("s_num = " + s_num + ", 제곱수를 만드는 숫자 = " + i);
answer = 1;
break;
}
else {
answer = 2;
}
i++;
}
System.out.println("s_num = " + s_num + ", n = " + n);
return answer;
}
public static void main(String[] args) {
int n = 144;
System.out.println(solution(n));
}
}
하드코딩으로 풀어보았지만 훨씬 나은 방법이 있을 것 같았다.
제곱관련문제는 메서드로도 접근이 가능한데 Math클래스의 pow()메서드로 접근이 가능하다.
Math.pow(밑, 지수);
Math.pow(제곱할 수, 몇제곱);
문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120909
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스] '최댓값 만들기 (2)' - Java (0) | 2023.05.15 |
---|---|
[프로그래머스] '직사각형 넓이 구하기' - Java (0) | 2023.05.14 |
[프로그래머스] '치킨 쿠폰' - Java (0) | 2023.05.13 |
[프로그래머스] '문자열 계산하기' - Java (0) | 2023.05.13 |
[프로그래머스] '한 번만 등장한 문자' - Java (0) | 2023.05.12 |