Algorithm/Implementation

[프로그래머스] 연속된 수의 합

킹우현 2023. 7. 23. 22:54

def solution(num, total):
    answer = []
    multiple = 0
    
    if num%2 == 0:
        start_num = num//2
        answer = [i for i in range(-(num//2)+1, num//2+1)]
    else:
        start_num = 0
        answer = [i for i in range(-(num//2),num//2+1)]        
    
    while(1):
        if start_num == total:
            answer = [i+multiple for i in answer]
            break
        start_num += num
        multiple += 1
            
    return answer

이번 문제는 주어진 num개의 연속된 수의 합이 total이 되도록 하는 연속된 수로 이루어진 배열을 구하는 문제이다.

 

처음에는 2중 반복문으로 모든 경우의 수를 다 검색해봤는데 테스트케이스 하나가 틀려서 테스트케이스에서 힌트를 얻고 패턴을 찾아서 풀이할 수 있었다 :)

 

다른 사람의 풀이를 보니 더 간단하게 푼 사람도 있었는데, 수학 관련 문제는 경우의 수가 가지는 패턴을 찾는 것이 중요한 것 같다.

'Algorithm > Implementation' 카테고리의 다른 글

[백준 3190번] 뱀  (0) 2023.08.06
[백준 21608번] 상어 초등학교  (0) 2023.07.31
[프로그래머스] 바탕화면 정리  (0) 2023.06.23
[프로그래머스] 공원 산책  (0) 2023.06.23
[프로그래머스] 추억점수  (0) 2023.06.23