코딩 테스트 준비
정수 제곱근 판별 level 1 - 18분
개발쉐발
2022. 10. 20. 10:53
728x90
반응형
내 풀이
def solution(n):
answer = -1
for i in range(1, n+1):
# n+1을 안해주면 18번이 틀린다. 본인과 본인의 제곱이 본인인 것이 있는 걸까?
if i*i == n :
answer = n // i
break
return (answer + 1)**2 if answer > 0 else answer
시간 복잡도는 n의 크기에 반까지 연산을 하여 나타나기에 항상 n분의 2만큼 연산해야한다. 풀기 전에 생각을 했어야 하는데 바로 풀어서 쓸데없이 푸는 데 시간이 걸렸다.
항상 생각하고 들어가는 습관을 들여야한다. 잊지말자!
프로그래머스 풀이
def nextSqure(n):
sqrt = n ** d (1/2) 이렇게 하면 제곱의 밑을 바로 찾을 수 있다!
if sqrt % 1 == 0:
return (sqrt + 1) ** 2
return -1
시간이 정말 빠르다. 제곱의 밑을 바로 구하는 방식을 사용해서 그 값이 1로 나누어지는지 확인만 하면 되니까 쓸데없는 연산이 필요없었다. 먼저 구할 수 있는 값을 구하는 최선의 풀이를 생각하자!
혹시 몰라 sqrt 함수도 첨부한다.
> math.sqrt 함수
함수 모양 : math.sqrt(x)
함수 설명 : math.sqrt(x) 함수는 x의 제곱근을 반환합니다. (x에 루트를 씌운 값을 반환)
추가 정보
1. 이 함수의 반환형 또한 float 타입입니다.
2.math.sqrt(음수)가 들어오게 된다면 ERROR 가 발생합니다. (math.sqrt(-2) 이런 식은 에러 발생)
> 간단한 math.sqrt 함수 사용 예제
import math
math.sqrt(4) # 4의 제곱근인 2를 반환합니다 (float 타입이므로 2.0)
출처: https://blockdmask.tistory.com/522 [개발자 지망생:티스토리]
728x90
반응형