5를 초항으로 했을때 ,5*3+1 , 8 , 4 , 2 , 1
항은 6개, 사이의 길이가 1일때 x는 0~5 까지 . 즉 count = 5 ,(length로 표현해도 될듯)
0~1 , 1~2 ,,, n-1~n 했을 때 각각의 넓이 integ 배열에 append 해줌
넓이 구하는 공식은 x1의 y좌표랑 x2의 y좌표 더한다음 1곱하고 2로 나누면 되겠죠?! 삼각형 두개이니!
그리고 주어진 구간마다 정적분.
길이가 5인 그림인데, [1,-2] 구간이 1<=x<=3 이래서 헷갈렸다
코드로 표현하면 start <= x <= end+length 이다
length=5, start = 1 , end = -2 !!
그래서 구간이 1~3이 되고 예외라고한다면
구간의 길이가 0일때, length와 같을 때 , length 보다 길 때가 있겠다
각각 0 , sum(integ) , -1 로 표현해주면 되겠습니다
def solution(k,ranges):
#콜라츠 추측
answer=[k] //처음좌표 초기화해주고
k1=k // k값 계속쓰려고 k1에 넣어놓고 k는 아래에서 버려집니다 ㅠㅠ
cnt=0 // length 되겠습니다.
while True: //콜라츠 추측 하라는대로 하겠습니다.
if k%2==0:
k=k//2
cnt+=1
answer.append(k)
elif k==1:
break
else:
k=k*3+1
cnt+=1
answer.append(k)
print(answer) //잘나왔나 확인한번씩해주고
print(cnt) //길이도 마찬가지
m=[] //여기다 마무리 적분값 append 해줄것이고
integ=[] //넓이 겋을거에요
for i in range(cnt): //사다리꼴 구하는공식
integ.append((answer[i]+answer[i+1])/2)
print(integ)
#정적분
for i in range(len(ranges)):
if ranges[i][0]-ranges[i][1]>cnt: //구간이 오버됐을때
m.append(-1.0) //float인거 조심
elif ranges[i][0]-ranges[i][1]==cnt: //구간길이 length랑 같아서 적분값 0일때
m.append(0.0) //마찬가지 float
else:
m.append(sum(integ[ranges[i][0]:cnt+ranges[i] [1]])) //start , length+end
return m
저의 코드입니다.