문제
접근법
풀이
def expressions(num): answer = 1 # 모든 num은 자기 자신을 답으로 가진다. _sum = 0 left = 0 while left != (num // 2 + 1): # left가 도달할 곳은 절반(num//2)면 충분하다. if _sum < num: for right in range(left+1, num // 2 + 1 + 1): # right는 left + 1까지 체크 _sum += right # 합이 더 작다면, 계속해서 right를 더해준다. if _sum == num: # right를 더해주다가, num과 일치하면 횡재했다. answer += 1 # 경우의 수를 하나 찾았으므로 +1 해준다. left += 1 # left를 오른쪽으롷 한칸 옮겨서 기준점을 다시 설정한다. _sum = 0 # sum을 0으로 초기화해줘야 다음 계산도 가능하다. break elif _sum > num: # right를 더한 결과 num을 초과하면 left += 1 # left를 한 칸 옮겨주고, _sum = 0 # _sum을 0으로 초기화 한다. break return answer
주의할 점
range(0, a)라면 0, 1, 2, .... , a-1까지이므로 +1을 해주어야 한다.