눈송이의 개발생활

[Programmers Lv.1]정수 제곱근 판별 & 정수 내림차순으로 배치하기 (Python) 본문

Algorithm/Programmers

[Programmers Lv.1]정수 제곱근 판별 & 정수 내림차순으로 배치하기 (Python)

꾸지새미언니

문제 - 정수 제곱근 판별

https://programmers.co.kr/learn/courses/30/lessons/12934

내 코드 

def solution(n):
    sqrt = n**(1/2)
    if sqrt.is_integer() :
        return (sqrt+1)**2
    else:
        return -1

다른 사람 풀이 

def solution(n):
    sqrt = n**(1/2)
    if sqrt % 1 == 0:
        return (sqrt+1)**2
    else:
        return -1

해결 방법

n에 제곱근을 씌우고 정수로 떨어지는 숫자를 찾을 때 is_integer() 함수를 사용했었다. 

float type의 수가 정수(int)인지 아닌지 확인할 때 사용하는 함수라고 한다. 

return 값은 boolean! 

 

다른 사람의 풀이를 보니 1로 나누었을 때 나머지를 보는 방법도 있었다. 

굳이 함수를 사용하지 않고 수식을 사용해서 float/int를 구별하는 방법을 배웠다. 

 

float.is_integer() : 소수가 정수인지 아닌지 판별할 때 

float % 1 == 0 : 소수를 1로 나눴을 때는 나머지가 존재하기 때문에 나머지가 0이면 정수 

 


문제 - 정수 내림차순으로 배치하기

https://programmers.co.kr/learn/courses/30/lessons/12933

내 코드 

def solution(n):
    s = sorted(str(int(n)), reverse=True)
    return int(''.join(s))

해결 방법

이 문제는 조금 이상했다. 

분명히 정수로 n을 받아오고, 테스트 케이스에서는 문제가 없었는데 제출하니 런타임 에러가 났었다. 

질문을 보니까 다른 사람들도 나와 똑같은 부분에서 에러가 났고, 질문글에서 해결책을 찾아 n을 int로 한 번 변환해준 뒤에 나머지 코드를 실행하니 런타임 에러 없이 돌아갔다. 

나중에 테스트 케이스를 추가하는 부분을 보니 n의 type이 long으로 되어있었다.....

항상 정수는 당연하게 int라고 생각했었는데 앞으로는 더 깊게 생각해야 하나보다... ㅎㅎ🙄

Comments