코딩테스트 기초 메모

SUSU·2023년 9월 21일
0

1. 연속된 수

연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.

입출력 예

numtotalresult
312[3, 4, 5]
515[1, 2, 3, 4, 5]
414[2, 3, 4, 5]
55[-1, 0, 1, 2, 3]
def solution(num, total):
    answer = []
    
    center_num = int(total // num)
    
    
    if num % 2 == 1: #홀수인 경우
        for i in range(center_num - int(num//2), center_num + int(num//2) + 1 ):       
            answer.append(i)
            print(answer)

    else :
        for j in range(center_num - int(num//2) +1, center_num +int(num//2) + 1):
            answer.append(j)
            print(answer)

            

#    num 이 홀수 이면 가장 가운데의 수는 total/num → center_num이라고 선언
#    num 이 짝수이면 가장 가운데-1 번째 숫자의 수는 total//num
#    for문의 시작 
#    홀수의 경우 center_num - int(num//2)
#    짝수의 경우 center_num - int(num//2) +1
#    for문의 끝
#    홀수의 경우 center_num + int(num//2) + 1
#    짝수의 경우 center_num + int(num//2) + 1
        
    return answer

자연수인 경우 1부터 n까지 연속 숫자 합 구하는 공식
n(n+1)/2 를 쓸수 있는거 같은..?

시작숫자 찾기가 어려웠는데 다른사람들 보니 쉽게 찾눈듯 ㅠ

stnum = total // num - num // 2 + (num % 2 == 0) * 1

  1. 다음에 올 숫자

https://school.programmers.co.kr/learn/courses/30/lessons/120924

등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.

입출력 예

commonresult
[1, 2, 3, 4]5
[2, 4, 8]16
def solution(common):
    answer = 0
    
    #공차인지 공비인지 판단할때
    #공차수열에서 원소에 0이 있는 경우가 있으므로 
      
    
    eql_dff = common[1] - common[0]
    if common[2] - common[1] == eql_dff :
        return common[len(common)-1] + eql_dff 
    
    if common[0] != 0:
        eql_rat = common[1] / common[0]
        if common[2] / common[1] == eql_rat :
            return int(common[len(common)-1] * eql_rat)
    
profile
기록용

0개의 댓글