포시코딩

[프로그래머스][Lv.0] 제곱수 판별하기 본문

자료구조알고리즘/문제풀이

[프로그래머스][Lv.0] 제곱수 판별하기

포시 2022. 12. 27. 20:16
728x90

문제

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

 

프로그래머스

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

programmers.co.kr

 

내 풀이

def solution(n):
    for x in range(n):
        if x ** 2 == n:
            return 1
        if x ** 2 > n:
            return 2

 

다른 풀이 A

def solution(n):
    if n**(1/2) == int(n**(1/2)) :
        return 1
    else :
        return 2

원래 이렇게 풀고 싶었는데

144 ** 1/2  # 72.0

자꾸 이렇게 결과가 나와서 다른 방법으로 풀게 되었는데

알고보니 144 ** 1이 먼저 계산된 후 2로 나누게 되서 그랬던 것이었다.

의도한대로 하려면

144 ** (1/2)

이렇게 됐어야 했다.

 

다른 풀이 B

def solution(n):
    return 1 if (n ** 0.5).is_integer() else 2

굳이 (1/2)를 괄호로 감쌀 필요 없이 0.5를 쓰면 해결될 문제였다.

그리고 .is_integer() 함수를 통해 정수 여부를 판별함으로서 삼항연산자로 나타낸 풀이

728x90