반응형

학원 점심시간에 코테문제 풀기 후후..😊

 

 

 

문제

 


문제 설명

연속한 자연수의 합이 n이 되는 경우의 수를 구해라.

 

 

예시: n = 15  -> result = 4

  • 1 + 2 + 3 + 4 + 5 = 15
  • 4 + 5 + 6 = 15
  • 7 + 8 = 15
  • 15 = 15

 


코드

# 연속한 자연수의 합이 n이 되는 경우의 수를 구해라.

# 예시: n = 15  -> result = 4
# 1 + 2 + 3 + 4 + 5 = 15
# 4 + 5 + 6 = 15
# 7 + 8 = 15
# 15 = 15


def solution(n):

    answer = 0
    
    for i in range(1, n // 2 + 1):
        sum = i
        new_i = i
        while n > sum:
            new_i += 1
            sum += new_i

        if sum == n:
            answer += 1

    # 자기 자신일 경우
    answer += 1
    
    return answer

 


코드 설명

 

n: 함수의 매개변수, 표현해야 하는 숫자

 

for문을 이용해서 연속한 숫자를 더한 변수인 sum이 n보다 크기 전까지(같거나 작을 때까지) 반복을 한다.

sum이 n과 같을 경우 answer에 1 더해준다.

for문을 n을 반으로 나눈 숫자 만큼 돌린다.

=> 7+8과 8+7은 같은 것으로 치기 때문이다.

 

더한 것 빼고도 자기 자신인 경우도 포함하기 때문에 마지막에 1을 한번 더 더해주게 된다.

 

 

 

 

 


 

반응형
복사했습니다!