[프로그래머스] 숫자의 표현

chanyeong kim·2021년 12월 1일
0

프로그래머스

목록 보기
23/51

📩 -->문제설명

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.

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

자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.

제한사항

  • n은 10,000 이하의 자연수 입니다.

입출력 예

citationsreturn
154

💡 solution(사용언어: python)

def solution(n):
    cnt=0
    for i in range(1,n+1):
        answer=0
        while True:
            answer+=i
            if answer >=n:
                break
            i+=1
        if answer==n:
            cnt+=1
    return cnt  

👉 설명

  • 무지성이지만 그냥 처음부터 다 더해주는 방식으로 일단 해봤는데 통과했다 ㅋㅋㅋ
  • n=15라면 1부터 1을 추가한 값을 계속 더하고, answer에 담아준다.
  • answer가 n보다 크거나 같다면 break를 건다.
  • 다시 answer가 n과 같다면 cnt에 1을 더해준다
  • for 문이 끝나면 cnt를 리턴해준다.

결과

다른 풀이

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의 약수 중 홀수가 몇개 있냐는 문제와 같은 문제로 해석할 수 있다

🌈 느낀 점

오늘 문제 1분컷이어서 아침이 길어졌다...ㅎㅎ

출처: 프로그래머스

오류가 있으면 댓글 달아주세요🙂

0개의 댓글