연습장

숫자의 표현 본문

프로그래머스/2단계

숫자의 표현

js0616 2024. 4. 30. 21:25

 

어떤 숫자 n 에 대하여 연속하는 자연수의 합으로 해당 숫자가 몇개 나오는지 확인 하는 문제 

 

1+2+3+4+5 = 15

2+3+4+5+6 > 15 ... x 

3+4+5+6 > 15 ... x 

... 

 

 

위와 같이 1부터 하나씩 더하면서 n 과 비교하는 방법이 될 수 있으나

 

n/2 이후의 구간부터는 사실상 의미없이 버려지는 부분이다.

 

7+8 = 15 .. o 

8+9 > 15 .. x

9+10 > 15 .. x

... 

 

15 = 15 ... o 

 

따라서 이를 반영하기 위해서 다음과 같이 코드를 짜보았다. 

 

n 이 홀수 / 짝수 일 경우에 따라서 그 절반 or 절반을 반올림 한 숫자부터

1씩 감소하며 연속하는 숫자의 합을 구하도록 하였다. 

 

def solution(n):
   
    # 자기자신
    answer = 1
   
    # n이 1일경우 종료
    if n == 1 :
        return answer
    else :
        if n%2 :
            i = (n//2) + 1
        else :
            i = n//2
   
    for j in range(i,0,-1) :
        sum = 0
        while sum < n and j > 0 :
            sum += j
            if sum == n:
                answer += 1
                break
            else :
                j -= 1

    return answer
   


 

 

8 + 7 = 15 ... o

7 + 6 + 5 > 15 ... x

6 + 5 + 4 = 15 ... o 

5 + 4 + 3 + 2+ 1 = 15

4 + 3 + 2 + 1 < 15 .. 

3 ... < 15

2  ... < 15

1 ... < 15

 

'프로그래머스 > 2단계' 카테고리의 다른 글

피보나치 수  (0) 2024.04.30
다음 큰 숫자  (0) 2024.04.30
4. 이진 변환 반복하기  (1) 2024.03.24
3. 올바른 괄호  (1) 2024.03.05
2. 최솟값 만들기  (1) 2024.03.05