프로그래머스 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의 약수 중 홀수가 몇개있냐는 문제로 해석한 풀이였습니다. 이렇게 공식을 떠올려 적용한 풀이를 보며 놀라기도 하고 아직 내 갈길은 멀었구나 라고 느끼게 되었습니다...😔😔😔
감사합니다.