[프로그래머스] Java 코딩테스트 - 제곱수 판별하기

yihyun·2025년 4월 3일

코딩테스트

목록 보기
38/105
post-thumbnail

제곱수 판별하기

✅ 문제 설명

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

❗ 제곱수는 같은 수를 곱했을 때 정수가 나오는 수를 말한다.

✅ 제한사항

1 ≤ n ≤ 1,000,000

🔽 소스코드 1

💻 풀이

  • int i 를 2번 곱했을 때 n 보다 작을 때까지 반복문을 실행해준다.
  • 이후 i * i 가 n과 일치할 경우 1을 일치하지 않을 경우 2를 return 해준다.

시간 0.01ms ~ 0.05ms

	public int solution(int n) {
		
		for(int i = 1; i * i <= n; i++) {
			if(i * i == n) {
				return 1;
			}
		}
		
		return 2;
	}

🔽 소스코드 2 (Math.sqrt)

💻 풀이

  • 더 쉽고 간단하게 풀 수 있는 방법은 Math.sqrt 이다.
    Math.sqrt : 제곱근을 반환하는 함수

  • 매개변수 n의 제곱근을 구해준다. (실수를 return하기 때문에 double로 받아준다.)

  • 이후 구해진 제곱근(실수) 와 정수로 변환한 제곱근이 일치할 경우 1, 일치하지 않을 경우 2를 return 해준다.

시간 0.02ms ~ 0.04ms

전체코드

	public int solution1(int n) {
		double sq = Math.sqrt(n);
		
		return (sq == (int) sq) ? 1 : 2;
	}

🔽 소스코드 3 (Math.sqrt와 나머지 연산자 이용)

💻 풀이

  • 이번 풀이는 제곱수의 특징을 이해하면 풀 수 있는 방법이다.
  • 먼저 매개변수 n 을 n의 제곱수로 나눈 뒤 나머지가 0이될 경우 제곱수이니 1을 return, 안될 경우 제곱수가 아니기 때문에 2를 return 해준다.

전체코드

	public int solution2(int n) {
		
		if(n % Math.sqrt(n) == 0) {
			return 1;
		}
		return 2;
	}
profile
개발자가 되어보자

0개의 댓글