Data house

[Python] 제곱수 판별 - is_integer() 본문

Computer Knowledge/코테 대비 오답노트

[Python] 제곱수 판별 - is_integer()

l._.been 2023. 5. 24. 13:21
728x90
문제

https://school.programmers.co.kr/learn/courses/30/lessons/120909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

# 말 그대로 제곱수인지 판별해야함

 

나의 풀이
def solution(n):
    return 1 if (n**(0.5)).is_integer() else 2

n**(0.5)는 루트 n 을 말하는데, 이게 만약 정수라면 제곱수라고 볼 수 있다. 즉 1을 반환.

제곱수는 루트를 해도 정수인데 만약 그게 아니라면 제곱수라고 볼 수 없다. 즉 2를 반환

 

인상적인 풀이
def solution(n):
    if n**(0.5) - int(n**(0.5)) == 0:
        return 1
    else:
        return 2

나의 풀이랑 맥락은 같은데,

n이 제곱수였다면 int(n**(0.5))에서 정수가 나와서 n**(0.5)랑 빼도 0이 될 것이다.

n이 제곱수가 아니라면 int(n**(0.5)에서 정수가 안나와서 n**(0.5)랑 빼도 0이 나오지 않을 것이다.