[구현] PRG 77884:약수의 개수와 덧셈

KimRiun·2021년 11월 16일
0

알고리즘_문제

목록 보기
20/26

사용 언어: python 3.9.5

❓ Problem

문제 설명

https://programmers.co.kr/learn/courses/30/lessons/77884

난이도

level 1

🚩 Solution

시도 01)

1. 접근법

  1. 약수를 구한다
    1. 1부터 자기 자신 중 2로 나누어 떨어지는 수가 몇 개 인지 알아낸다
  2. 짝수인지 홀수인지 판별한다
    1. 2로 나누어 떨어지는 수인지 알아낸다
  3. 최종 답안에서 짝수면 덧셈, 홀수면 뺄셈한다

2. 코드

def solution(left, right):
    answer = 0
    for i in range(left, right+1):
        cnt = 0
        
        # 약수 구하기
        for j in range(1, i+1):
            if i % j == 0:
                cnt += 1

        # 개수(size)가 짝수이면 더하기
        if cnt % 2 == 0:
            answer += i
        else:
            answer -= i

    return answer

3. 결과

성공

4. 소요 시간

10분

📕 피드백

1. 검색한 내용

2. 실수

3. 발전 방향 (개선/추가사항)

4. 다른 사람 풀이

풀이1)

  • 링크

  • 접근법

제곱인 수는 항상 약수의 개수가 홀수 개라는 사실을 기반으로 접근

제곱이 아닌 수는 항상 약수의 개수가 짝수 개이다

** 연산자는 제곱을 의미함 (a**b는 a의 b 제곱)

  • 코드
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
profile
Java, Python

0개의 댓글