programming
Smart Number 파이썬 풀이 및 해설
by Kitle · 2021. 01. 03.
해커랭크 사이트의 Smart Number 퀴즈에 대한 풀이입니다.
이번 문제도 기존 코드를 주고 디버깅 하는 문제입니다.
문제
A number is called a smart number if it has an odd number of factors. Given some numbers, find whether they are smart numbers or not.
입력예시
출력 예시
YES
NO
NO
YES
설명
풀이
import math
def is_smart_number(num):
val = int(math.sqrt(num))
if val ** 2 == num:
return True
return False
for _ in range(int(input())):
num = int(input())
ans = is_smart_number(num)
if ans:
print("YES")
else:
print("NO")
해설
디버깅용으로 디폴트로 주어진 소스코드가 math.sqrt를 사용한다는 것을 알 수 있다. 제곱근을 가지고 추정해 응용할 수 있고 is_smart_number 를 수정하라고 했으므로 밑의 함수는 건드릴 필요가 없다.
어떤 숫자가 주어지면 팩터는 나누어 떨어지는 수로 쌍을 구할 수 있다. 하지만 예외적으로 제곱근이 주어지는 경우 홀수가 된다.
결국 어떤 숫자가 주어지고 제곱근을 구한뒤, 이 제곱근을 제곱하여 원래의 수가 나오는지 확인하여 이게 맞는 경우는 제곱근이 존재하게 되므로 스마트 숫자라고 볼 수 있다.
풀이 깃허브에서 보기 : https://github.com/kitlexyz/algorithm/blob/master/hackerrank/smart-number.py
원본 퀴즈 출처 : https://www.hackerrank.com/challenges/smart-number/problem