programmers- lv.1 (약수의 개수와 덧셈)

이예송·2023년 7월 11일

PS

목록 보기
18/97

문제링크: 약수의 개수와 덧셈

✍🏻 Information

content
언어python
난이도⭐️
풀이시간8분
제출횟수3
인터넷검색유무yes




🍒 My Code

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        tmp = 0
        sqt = int(i ** (1/2))
        for j in range(1,sqt+1):
            if j*j==i:
                tmp = 1
                break
        if tmp==0:
            answer+=i
        else:
            answer-=i
        #print(i,answer)
    return answer




💡 What I learned

  • 처음에 j의 range를 (1,i//2) -> (1,i)로 해줘서 1이 인식 안돼서 testcase 1개씩을 통과하지 못했었다. 그러다 혼자 혹시? 하고 보니 역시 저거 때문이었다...

  • 약수의 개수가 홀수인 경우는 제곱근이 정수일때뿐이기 때문에 이를 이용해서 풀었다.

  • 제곱근 계산하는 방법
    1) **(1/2) 해주기
    2) math.sqrt() 사용 -> import math 해주어야함

  • 세제곱근부터는 ** 연산자로 해야함

  • 나처럼 j for문 안돌려도 풀 수 있었다.

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer

0개의 댓글