눈송이의 개발생활
[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라고 생각했었는데 앞으로는 더 깊게 생각해야 하나보다... ㅎㅎ🙄
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers Lv.1]숫자 문자열과 영단어 (Python) (0) | 2022.03.23 |
---|---|
[Programmers Lv.1]콜라츠 추측 & 최대공약수와 최소공배수 (Python) (0) | 2022.03.10 |
[Programmers Lv.1]짝수와 홀수 & 하샤드 수 (Python) (0) | 2022.03.07 |
[Programmers Lv.1]2016년 & 핸드폰 번호 가리기 (Python) (0) | 2022.03.05 |
[Programmers Lv.1]행렬의 덧셈 & x만큼 간격이 있는 n개의 숫자 (Python) (0) | 2022.03.05 |
Comments