https://school.programmers.co.kr/learn/courses/30/lessons/134239
1. 문제 해결 방법
def solution(k, ranges):
x_list = [k] #우박수열 list, 처음에 k 값 넣어주고 시작
sum_list = [0] #누적합 list
result = [] #결과 담을 list
while k!=1: #우박수열 구하기
if k % 2 == 0:
k = k // 2
else:
k = k*3 + 1
x_list.append(k)
for i in range(len(x_list)-1): #정적분의 누적합 구하기
sum_list.append(sum_list[i] + (x_list[i] + x_list[i+1]) / 2)
for i in ranges: #투포인터를 이용해 누적합[end]-누적합[start]
start = i[0]
end = i[1] + (len(sum_list)-1) #누적합을 0부터 시작해서 -1 해줌
if start>end: #시작점보다 끝점이 클 경우
result.append(-1.0)
else:
result.append(sum_list[end] - sum_list[start])
return result
* result가 float형으로 구성되어있기 때문에 //가 아닌 /를 이용해서 문제를 해결한다.
'🔅코딩테스트 공부🔅 > ❗프로그래머스(Lv.2)' 카테고리의 다른 글
[프로그래머스] Level2 영어 끝말잇기(python) (0) | 2023.04.17 |
---|---|
[프로그래머스] Level2 괄호 회전하기(python) (0) | 2023.03.29 |
[프로그래머스] Level2 다음 큰 숫자(python) (0) | 2023.03.18 |
[프로그래머스] Level2 JadenCase 문자열 만들기(python) (0) | 2023.03.17 |
[프로그래머스] Level2 할인 행사(python) (0) | 2023.03.08 |
댓글