코딩 테스트/프로그래머스

Lv0. 연속된 수의 합

  • -
728x90
반응형

문제 보기 :  연속된 수의 합 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


문제

  • 정답률 : 64%


작성 코드

import math
def solution(num, total):
    answer = []
    if num % 2==0:
        j = math.ceil(total/num)
        a = [j-1] ; b = [j]
        for i in range(num//2-1):
            a.append(a[-1]-1)
            b.append(b[-1]+1)
        a = a[::-1]
        answer = a+b
    else:
        j = math.ceil(total/num)
        j -= num//2
        for i in range(num):
            # if i == num//2:
            answer.append(j)
            j+=1
        
    return answer

풀이

num이 짝수일 때와 홀수일 때로 나눠서 정의된다.

짝수일 때의 예시를 들어 설명한다. (짝수는 4로 두고, total은 14로 둔다)
1. math.ceil(total//num) = 4를 두 개의 리스트에 하나는 4-1을, 하나에는 4를 넣는다. (a=[3], b=[4])
2. ( total//num) - 1의 횟수만큼 a에는 a[-1]-1을 append, b에는 b[-1]+1을 append한다.
3. 턴이 다 끝났다면 a는 순서를 뒤집고, b는 순서를 그대로 두어 연결한다.

홀수일 때도 예시를 들어 설명한다. (홀수는 5로 두고, total은 15로 둔다)
1. math.ceil(total//num) = 3을 기준으로 5//2를 3에서 뺀다. (j=-1)
2. 그리고 num만큼 j를 리스트에 append하는데, 한 턴마다 j+=1를 해준다.
3. 턴이 다 끝났다면 그대로 출력한다.

320x100
728x90

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv1. 소수 찾기  (0) 2024.08.08
Lv2. 프로세스  (0) 2024.08.06
Lv2. [1차] 캐시  (0) 2024.08.02
Lv2. H-Index  (0) 2024.08.01
Lv2. 의상  (0) 2024.08.01
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.