문제 요약
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 |