Notice
Recent Posts
Recent Comments
Link
코드로 우주평화
정수 제곱근 판별 본문
반응형
문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다
해결 방법
1. n의 제곱근을 구한다.
2. 제곱근이 정수로 나누어 떨어진다면 1을 더하고 제곱을 구한다.
3. 제곱근이 정수로 나누어 떨어지지 않으면 -1을 반환한다.
def solution(n):
a = n ** (1 / 2)
return -1 if a % 1 else (a + 1) ** 2
사실 한 줄로 풀 수도 있었지만 그럴려면 제곱근을 구하는 연산이 2번 들어가야한다. 그것은 좋은 코드가 아니라고 생각하여 변수를 활용해 나머지 연산을 하였다.
사실 가독성과 유지보수를 위해서라면 반환 값 자체도 변수에 넣어 반환하는 것이 좋을 것 같다. 다음에는 코드 줄 수에 연연하지 않고 가독성과 효율을 생각해서 작성해보자.
반응형
'나는 이렇게 학습한다 > Algorithm & SQL' 카테고리의 다른 글
자연수 뒤집어 배열로 만들기 (0) | 2022.01.24 |
---|---|
정수 내림차순으로 배치하기 (0) | 2022.01.23 |
if 사용하지 않고 제일 작은 수 제거하기 (0) | 2022.01.21 |
짝수와 홀수 3가지 풀이법(if, dict, list) 그리고 bitwise (0) | 2022.01.21 |
최대공약수와 최소공배수 (0) | 2022.01.19 |