📘문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
https://school.programmers.co.kr/learn/courses/30/lessons/12934
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 제한조건
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
💡 개념 설명
- 1단계: 누적할 변수 answer 초기화
자릿수의 합을 저장할 answer라는 변수를 0으로 초기화합니다.
- 2단계: while문을 사용해 자릿수 처리
n이 0보다 클 때까지 반복합니다.
각 반복에서 n % 10을 사용하여 마지막 자릿수를 추출하고, 이를 answer에 더합니다.
- 3단계: 자릿수 제거
마지막 자릿수를 구한 후, n / 10을 사용하여 n에서 마지막 자릿수를 제거합니다.
- 4단계: 결과 반환
n이 0이 되면 모든 자릿수를 더했으므로, 최종적으로 answer 값을 반환합니다.
📎 입출력 예시

📎 코드
class Solution {
public long solution(long n) {
long answer = -1; // 기본은 -1로 시작
long i = 1; // 1부터 시작해서 제곱해보기
// 1. n의 제곱근이 존재하는지 확인
while (i * i <= n) {
if (i * i == n) {
// 2. 정수 제곱근이 맞다면, (i+1)^2을 반환
answer = (i + 1) * (i + 1);
break; // 더 이상 반복할 필요 없음
}
i++; // 3. 다음 숫자 확인
}
return answer; // 4. -1 리턴하거나 (i+1)^2 리턴
}
public static void main(String[] args) {
Solution solution = new Solution();
// 예시 테스트 1
long result1 = solution.solution(121);
System.out.println(result1); // 144 출력
// 예시 테스트 2
long result2 = solution.solution(3);
System.out.println(result2); // -1 출력
}
}
📎 결과

'Java' 카테고리의 다른 글
| [Java] 코딩 11 - 프로그래머스 기출 문제(JAVA) / 하샤드 수 / Day 10 (0) | 2025.07.09 |
|---|---|
| [Java] 코딩 10 - 프로그래머스 기출 문제(JAVA) / 정수 내림차순으로 배치하기 / Day 9 (0) | 2025.07.08 |
| [Java] 코딩 8 - 프로그래머스 기출 문제(JAVA) / 문자열을 정수로 만들기 / Day 7 (0) | 2025.07.06 |
| [Java] 코딩 7 - 프로그래머스 기출 문제(JAVA) / 자연수 뒤집어 배열로 만들기 / Day 6 (0) | 2025.07.05 |
| [Java] 코딩 6 - 프로그래머스 기출 문제(JAVA) / x만큼 간격이 있는 n개의 숫자 / Day 5 (2) | 2025.07.04 |