프로그래머스_숫자의 표현

임정민·2023년 5월 24일
1

알고리즘 문제풀이

목록 보기
49/173
post-thumbnail

프로그래머스 Python 문제풀이 입니다.

문제

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

[나의 풀이]

def solution(n):
    answer = 0
    
    # i는 1~n 까지
    for i in range(1,n+1):
        sum = 0
        
        # j는 i~n까지
        for j in range(i,n+1):
            sum += j
            if sum == n :
                answer += 1
                break
            if sum > n :
                break
                
    return answer

입력된 값을 연속된 수의 덧셈으로 구할 수 있는 방법의 수를 구하는 문제였습니다. 구현하는데는 어렵지 않았지만 아래와 같이 수학 공식을 활용한 풀이를 볼 수 있었습니다.🐶🐶🐶

[다른사람의 풀이]

def expressions(num):
    return len([i  for i in range(1,num+1,2) if num % i is 0])

등차수열 공식을 활용한 방식입니다. 예를 들어, n이 3개의 연속된 자연수(i-1, i, i+1)의 합으로 표현된다면 합은 3i가 됩니다. 즉, n은 3의 배수입니다. 마찬가지로 5개의 연속된 자연수의 합으로 n이 표현이 된다면 n은 5의 배수여야합니다. 따라서, n의 약수 중 홀수가 몇개있냐는 문제로 해석한 풀이였습니다. 이렇게 공식을 떠올려 적용한 풀이를 보며 놀라기도 하고 아직 내 갈길은 멀었구나 라고 느끼게 되었습니다...😔😔😔

감사합니다.

profile
https://github.com/min731

0개의 댓글