본문 바로가기
ALGORITHM/PROGRAMMERS

[PG/Python] 숫자의 표현

by 안녕나는현서 2022. 10. 3.
728x90

📌 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12924

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📌 문제 접근 방법

  1. n 이하의 자연수들 중에 연속으로 더해서 n이 되는 수를 찾는 문제
  2. n 이하의 자연수 x부터 시작해서 k개의 수를 더해서 n이 된다고 가정하면 다음과 같은 식이 나온다.
    x + (x+1) + (x+2) + ... + (x+k-2) + (x+k-1) = n
  3. 이를 계산하면,
    k(2x+k-1)/2 = n
  4. 이를 x를 기준으로 치환하면
    x = n/k - (k-1)/2
  5. x는 자연수이므로, n/k와 (k-1)/2도 모두 자연수가 되어야한다.
    이를 만족하려면, k는 n의 약수여야하고, 동시에 홀수여야만 한다.
  6. 따라서 n의 홀수인 약수의 개수만 구하면 된다.

 

📌 코드

from math import sqrt

def solution(n):
    answer = 0
    
    for num in range(1, int(sqrt(n))+1):
        quotient, remainder = divmod(n, num)
        
        if not remainder:
            if quotient%2:
                answer += 1
            
            if quotient != n//quotient and (n//quotient)%2:
                answer += 1
    return answer
728x90

'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글

[PG/Python] 메뉴 리뉴얼  (0) 2022.06.24
[PG/Python] 광고 삽입  (0) 2022.06.24
[PG/Python] 캐시  (0) 2022.03.03
[PG/Python] N-Queen  (0) 2022.02.27
[PG/Python] 삼각 달팽이  (0) 2022.02.27

댓글