코딩(Coding)/백준 문제풀이
[백준] 2417번: 정수 제곱근
J.S.Y
2021. 1. 5. 14:04
728x90
링크: www.acmicpc.net/problem/2417
2417번: 정수 제곱근
정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오.
www.acmicpc.net
정수 제곱근
문제
정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 n이 주어진다. (0 ≤ n < 2^63)
출력
첫째 줄에 q2 ≥ n인 가장 작은 음이 아닌 정수 q를 출력한다.
문제접근
해당문제는 그냥 수학문제이다. python의 제곱연산자("**")를 통해서 문제를 쉽게 해결할 수 있다. 나는 2가지 경우를 나눠서 문제에 접근했다. 37같이 딱나눠 떨어지지 않을 경우와 36같이 딱 나눠떨어질 경우를 말이다.
첫번째, 딱 나눠떨어지지 않을 경우 입력한 값의 1/2만큼 제곱을 해주어(루트를 씌우는 것과 같다.) 해당 정수의 제곱근을 얻어내고 +1을 해준다.(왜냐면 가장 작은 음이 아닌 정수이기 때문에 +1해준다.)
두번째, 딱 나눠 떨어질 경우는 간단하게 1/2만큼 제곱해주어 return 하게 끔 설계했다.
코드
"""
백준 알고리즘 2417번: 정수 제곱근
https://www.acmicpc.net/problem/2417
"""
import sys
def calc(n):
# 딱 떨어지는 제곱근이 아닐 경우
# ex) 17, 24, 33 등등
if n**(0.5)%1 != 0:
return int(n**(0.5))+1
# 딱 떨어지는 제곱근일 경우
# ex) 16, 25, 36 등등
else: return int(n**(0.5))
def main():
n = int(sys.stdin.readline())
print(calc(n))
if __name__ == "__main__":
main()
틀린부분이나 궁금한 부분있으면 댓글에 남겨주세요~ㅎㅎ :D
728x90