Algorithm/1일 1코테

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

대인보우 2020. 12. 7. 12:27
반응형

프로그래머스 2단계

숫자의 표현


Q. 문제

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

 

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

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

programmers.co.kr

 

A. 답

def solution(n):
    a = [i for i in range(1, n+1)]
    
    l = 0
    r = 1
    count = 0
    
    while l < n:
        s = sum(a[l:r])
       
        if s == n:
            count += 1
        
        if s < n:
            r += 1
        else:
            l += 1
    
    return count
        

풀이

- 1부터 n까지의 숫자가 들어있는 리스트를 만들어준다.

- 투 포인터를 이용하기 위해 l과 r을 정의한다.

- l은 a[0]부터 시작하고, r은 a[1]부터 시작해서 while문을 이용해 sum(a[l:r])을 구해준다.

- 만약 s가 n과 같으면 count를 해준다.

- s보다 작으면 n의 크기를 늘리기 위해 r을 옆으로, 그 반대라면 l을 옆으로 더해준다. 

 

 

다른사람 풀이

def expressions(num):
    answer = 0 # count 변수 
    for i in range(1, num + 1): 
        s = 0 # 합을 누적하는 변수
        while s < num:
            s += i 
            i += 1 
        if s == num:
            answer += 1
    return answer

for문을 이용해 1부터 하나씩 증가하여 num보다 작을때까지 누적,, 2부터 하나씩 증가하여 num보다 작을때까지 누적,,

누적한 값이 num과 같으면 +1 하는 방식 

반응형