기록하는삶

[코딩 테스트 연습(파이썬/Python)] 프로그래머스 _ 숫자의 표현 본문

프로그래머스/프로그래머스_lv2(Python)

[코딩 테스트 연습(파이썬/Python)] 프로그래머스 _ 숫자의 표현

mingchin 2021. 9. 22. 04:04
728x90
반응형

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

 

코딩테스트 연습 - 숫자의 표현

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

programmers.co.kr

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

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

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

def solution(n):
    check = 0
    for i in range(1, min(n//2+2, 141)):
        if i%2 ==0 and (n/i) - int(n/i) == 0.5 and (n/i - i//2 > 0):
            check +=1
        elif i%2 and (n/i) == int(n/i) and (n/i - i//2 > 0):
            check +=1
    return check

10000까지의 수는 최대 140개의 자연수의 합으로 표현될 수 있어 저렇게 구현했다. 짝수 개의 합이라면 가운데 숫자가 ___.5의 형태이어야 하고, 홀수라면 정수이어야한다.

 

시간초과가 될까봐 아래처럼 구현하지 않았는데, 문제 없이 그냥 통과가 됐다. 아마 n의 최댓값이 10000이라 가능한 것 같다.

def solution(num):
    answer = 0
    for i in range(1, num + 1):
        s = 0
        while s < num:
            s += i
            i += 1
        if s == num:
            answer += 1
    return answer
728x90
반응형