본문 바로가기
코테 준비

[프로그래머스] 우박수열 정적분

by 박수련 2024. 2. 29.

문제 요약

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

 

입력된 수가 짝수면 2로 나누고, 홀수면 3을 곱한 후 1을 더해준다. 이 과정을 1이 나올 때까지 반복한다.

이 과정에서 나온 값들의 나열을 우박 수열이라고 한다. 

 

우박수열에 대한 그래프를 주어진 범위에 따라 정적분해서 반환하는 문제이다.

문제 조건만 따라가면 풀 수 있는 문제였다.

 

코드

def solution(k, ranges):
    
    # 함수 초기값 설정 
    x, y = 0, k
    graph = [k]
    
    # 우박 수열의 함수값 구하기 
    while y != 1:
        if y % 2 == 0:
            y //= 2
        else:
            y = y * 3 + 1
        x += 1
        graph.append(y)
    
    # 우박 수열이 1인 x 값
    n = x

    result = []
    for srt, end in ranges:
        # 구간의 시작점이 끝점보다 크다면 정적분 결과 -1로 반환
        if srt > end + n:
            result.append(-1)
            continue

        # 주어진 범위에서의 정적분
        summ = 0
        for i in range(srt, end + n):
            summ += (graph[i] + graph[i + 1]) / 2
        
        result.append(round(summ,1)) 

    return result

 

'코테 준비' 카테고리의 다른 글

[프로그래머스] 공원 산책  (1) 2024.02.29
[프로그래머스] 인사고과  (0) 2024.02.29
[프로그래머스] 양궁대회  (1) 2024.02.29
[프로그래머스] 달리기 경주  (0) 2024.02.29
[백준] 2110 공유기설치 (Python)  (0) 2024.02.20