프로그래머스_Python_제곱수_if문, 루트, math 라이브러리

HEE·2025년 3월 24일
post-thumbnail

1. 프로그래머스 python 코딩테스트

Level 0. 제곱수 판별하기

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

정답 확인 (replace 안씀)

  1. for 반복문 + if문
def solution(n):
    for i in range(1,1001):
        if i**2 == n:
            return 1
    return 2
  • return의 위치를 자꾸 잘못 넣음.
    만일 if문 아래에 위치한다면, i=1만 검사하고 바로 return 해버림. 더 검사하고 싶으면, return을 if문 밖으로 빼야함.

**[while vs if 차이!]

while은 조건이 맞는 동안 계속 반복함.
if는 조건이 한번 맞는지 확인해서 실행함.

2.수학적 풀이_루트 사용

def solution(n):
    return 1 if int(n**0.5)**2 == n else 2
  • n**0.5 : 루트n, 즉 n의 제곱근.
    n = 6, 16 ** 0.5 = 4
    n = 18, 18 ** 0.5 = 4.24
  • int(n**0.5) : 제곱근을 정수로 자른것.
    int(4) = 4
    int(4.25) = 4
  • int(n**0.5) ** 2 : 정수로 자른 값에 다시 제곱.
    n = 16 - int(16**0.5)=4 - 4**2=16
  • 전체 조건 : int(n**0.5)**2==n
    n의 제곱근을 정수로 자른 다음 다시 2(제곱)할때, 원래의 수 n과 같으면 n은 제곱수.

3.math 라이브러리

import math
def solution(n):
    return 1 if math.isqrt(n)**2 == n else 2
  • math.isqrt() : 루트n, 즉 n의 제곱근.
profile
ALL IS WELL

0개의 댓글