-
[백준] 2417번: 정수 제곱근코딩(Coding)/백준 문제풀이 2021. 1. 5. 14:04728x90
링크: 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'코딩(Coding) > 백준 문제풀이' 카테고리의 다른 글
[백준] 11053번: 가장 긴 증가하는 부분 수열 (0) 2021.01.08 [백준] 1297번: TV 크기 (0) 2021.01.06 [백준] 10871번: X보다 작은 수 (0) 2021.01.04 [백준] 2739번: 구구단 (0) 2021.01.04 [백준] 14681번: 사분면 고르기 (0) 2021.01.04