Test/Python(20220101~)
프로그래머스.L0.제곱수판별하기
kiostory
2022. 10. 10. 15:34
문제 설명
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 1,000,000
입출력 예
n : result
144 | 1 |
976 | 2 |
* 첫 번째 생각
def solution(n):
for i in range(1,1001):
if i**2 == n:
return 1
return 2
for 문을 가지고 n이 1000000이 될 수 있는 숫자 1000까지
무식하게 제곱해서 비교해 보는 방법
실행 결과
채점을 시작합니다.
정확성 테스트
테스트 1 〉 | 통과 (0.32ms, 10.2MB) |
테스트 2 〉 | 통과 (0.03ms, 10.1MB) |
테스트 3 〉 | 통과 (0.02ms, 10.3MB) |
테스트 4 〉 | 통과 (0.04ms, 10.1MB) |
테스트 5 〉 | 통과 (0.20ms, 10.2MB) |
테스트 6 〉 | 통과 (0.21ms, 10.2MB) |
테스트 7 〉 | 통과 (0.34ms, 10.2MB) |
테스트 8 〉 | 통과 (0.31ms, 10.3MB) |
테스트 9 〉 | 통과 (0.01ms, 10.2MB) |
테스트 10 〉 | 통과 (0.36ms, 10.3MB) |
* 두 번째 생각
def solution(n):
return 1 if (n**0.5)%1 == 0 else 2
주어진 수 n의 제곱근(n의 0.5제곱) 한 값이 정수 일 경우를 찾으면 되겠지.
'정수일 경우' 라는 표현은 어떻게 해야 하나?
* 2로 나눴을때 나머지가 0 이면 짝수, 1이면 홀수
1로 나눴을때 나머지가 0이면 (소수점 이하 값이 없는) 정수
* is_integer()로 표현도 가능하겠다. ex) return 1 if (n**0.5).is_integer() else 2
실행 결과
채점을 시작합니다.
정확성 테스트
테스트 1 〉 | 통과 (0.01ms, 10.2MB) |
테스트 2 〉 | 통과 (0.01ms, 10.3MB) |
테스트 3 〉 | 통과 (0.01ms, 10.3MB) |
테스트 4 〉 | 통과 (0.01ms, 10.2MB) |
테스트 5 〉 | 통과 (0.01ms, 10.3MB) |
테스트 6 〉 | 통과 (0.01ms, 10.2MB) |
테스트 7 〉 | 통과 (0.01ms, 10.4MB) |
테스트 8 〉 | 통과 (0.01ms, 10.2MB) |
테스트 9 〉 | 통과 (0.01ms, 10.2MB) |
테스트 10 〉 | 통과 (0.01ms, 10.3MB) |
첫 번째 소요시간에 비해서 30배 빠르다 ( 0.01 : 0.34 )