간단한 문제이지만, 처음에 생각했던 방식과는 조금 다르게 풀었다:
def solution(n):
return (n**(1/2)+1)**2 if (int(n**(1/2)))**2 == n else -1
처음에 생각했던 방식은 이렇다 - 만약 제곱근이 정수이면, 제곱근에 +1 한 숫자를 다시 제곱으로 만들어주고, 제곱근이 정수가 아니라면 -1을 출력하는 것이다. 하지만 저 방식으로 제곱근을 구하게 되다면, 정수로 안나오고 무조건 소숫점 1의 자리의 숫자까지는 출력이 되기 때문에, 그 방식을 조정시키는 것 보다는, 아예 다른 방식을 사용하는 것이 낫다고 생각했다.
따라서 만약 제곱근을 int()로 둘러싼 후, 이것의 제곱이 원래의 숫자와 같다면, 제곱근이 정수라는 것을 알 수 있기 때문에, 이를 이요하여 if else 문을 쓰고 풀었다.
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: 짝수와 홀수> Level 1 - 파이썬 (0) | 2020.11.19 |
---|---|
<프로그래머스 문제풀이: 제일 작은 수 제거하기> Level 1 - 파이썬 (0) | 2020.11.19 |
<프로그래머스 문제풀이: 정수 내림차순으로 배치하기> Level 1 - 파이썬 (0) | 2020.11.19 |
<프로그래머스 문제풀이: 자연수 뒤집어 배열로 만들기> Level 1 - 파이썬 (0) | 2020.11.19 |
<프로그래머스 문제풀이: 자릿수 더하기> Level 1 - 파이썬 (0) | 2020.11.18 |