🔸 문제 설명
정수 n이 주어질 때, 이 숫자가 제곱수인지 판별하는 문제입니다.
- 제곱수면 → 1
- 제곱수가 아니면 → 2를 반환합니다.
🔸 입출력 예시
입력 | 출력 | 설명 |
144 | 1 | 12 × 12 = 144 → 제곱수 |
976 | 2 | √976 ≈ 31.2 → 제곱수 아님 |
🔸 처음에 몰랐던 부분
처음엔 어떤 게 제곱수인지 어떻게 판별해야 할지 몰랐음.
이때 자바의 Math.sqrt() 함수를 사용하면 정답!
Math.sqrt()란?
- Math.sqrt(숫자) → 그 숫자의 제곱근을 double로 반환
- 예:
- Math.sqrt(144) → 12.0
- Math.sqrt(10) → 3.16...
👉 제곱근이 정수이면 제곱수, 아니면 제곱수가 아니다.
🔸 정답코드
class Solution {
public int solution(int n) {
double sqrt = Math.sqrt(n); // 제곱근 구하기
if (sqrt == (int)sqrt) { // 정수인지 확인
return 1;
} else {
return 2;
}
}
}
💡 포인트
Math.sqrt(n) | n의 제곱근을 구함 |
(int)sqrt | 소수점 제거해서 정수 비교 |
== | 제곱근이 정수인지 판별 (제곱수인지 확인) |
예를 들어 Math.sqrt(16)은 4.0
그걸 (int)로 바꾸면 4가 되지
4.0 == 4니까 제곱수 맞다!
그런데 Math.sqrt(10)은 3.16... → (int)로 바꾸면 3
3.16 != 3 → 제곱수 아님 ❌
'코딩테스트' 카테고리의 다른 글
[코딩테스트 입문] 특정 문자 제거하기 (0) | 2025.04.21 |
---|---|
[코딩테스트 입문] 문자 반복 출력하기 (0) | 2025.04.21 |
[코딩테스트 입문] 피자 문제 총정리 (0) | 2025.04.21 |
[코딩테스트 입문] 최빈값 구하기 ★ (0) | 2025.04.21 |
[코딩테스트 입문] 삼각형의 완성조건 (1) (0) | 2025.04.21 |