코딩(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