본문 바로가기

Job Wanted/코테 - 프로그래머스

[프로그래머스] 코딩테스트 연습 > 코딩테스트 입문 > 제곱수 판별하기

728x90
반응형

처음에는, 작은 수만 예외로 처리하고, 범위를 주어진 수의 절반까지의 범위로 했었는데, 이게 잘못된 접근이었다. 주어진 문제의 숫자의 범위가, 1,000,000이었기 때문에 자칫하면 루프가 50만번 돌 수도 있었다.

 

근데, 매개변수의 제한조건이 백만이니까, 최대 제곱수가 1000일거라는 생각이 들어 루프의 범위를 줄이고 다시 돌려봤더니 금새 문제가 풀렸다.

 

내가 맞힌 정답::

def solution(n):
    answer = 0
    
    for i in range(1,1001):
        if n == i*i:
            answer = 1
            break
        else:
            answer = 2
    
    return answer

잘못 작성한 답 (1, 2)

def root(n):
    rootN = int(n/2)
    for i in range(2,rootN):
        if n//rootN == rootN:
            return rootN
        else :
            return False


def solution(n):
    answer = 0
    print(root(8))
    print(root(9))
    
    if root(n):
        answer = 1
    else:
        answer = 2
    
    return answer
728x90
반응형