728x90
https://school.programmers.co.kr/learn/courses/30/lessons/134239
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 좀 알고 와라
우박 수열을 정적분 한다 어차피 x 가 1씩 증가하고 y 증가량이 직선이기 때문에 그냥 양 끝점 더해서 2로 나눠주면 된다
그런데 구간을 1, -2라는 식의 개소리를 해서 화가 났지만 다행히도 앞에 값은 시작점 뒤에 -는 끝점부터 거리라는 걸 알았다 지금 이렇게 설명해도 이 새끼 뭐라는 거야라고 생각하는 너를 위한 설명은 더 이상 없다
어쨌든 나머지는 수열이 1이 될 때까지 반복해서 구간에 해당하는 적분 값만 구하고 원하는 구간별로 더해주면 된다
def solution(a, r):
f=lambda x: x//2 if x%2==0 else x*3+1
p=[]
while a!=1:
b=f(a)
p.append((a+b)/2)
a=b
n=len(p)
t=[]
for i in r:
if i[0]>n+i[1]:t.append(-1)
else:t.append(sum(p[i[0]:n+i[1]]))
return t
댓글