728x90
area 구현까지는 어렵지 않게 했으나 offset 구현 부분에서 무슨 말인지 이해가 안되서 블로그를 참고했다. 생각보다 어렵지 않는 내용이었다.
def find(n):
if n%2 == 0:
return int(n/2)
else:
return n*3+1
def solution(k, ranges):
answer = []
coor = [ ]
count = 1
coor.append([0,k])
while True:
if k==1:
break
else:
coor.append([count,find(k)])
k = find(k)
count+=1
area = [ ]
area.append(0)
for i in range(0,len(coor)-1):
area.append((coor[i+1][1]+coor[i][1])*0.5)
for i in range(1,len(area)):
area[i]+=area[i-1]
s = 0
for i in range(0,len(ranges)):
start = ranges[i][0]
finish = ranges[i][1]+len(area)-1
if start > finish:
answer.append(-1)
else:
answer.append(area[finish]-area[start])
return answer728x90
'🟢 알고리즘 문제 풀이 > Programmers' 카테고리의 다른 글
| [파이썬] 프로그래머스 테이블 해시 함수 (0) | 2023.01.17 |
|---|---|
| [파이썬] 프로그래머스 마법의 엘리베이터 (0) | 2023.01.17 |
| [파이썬] 프로그래머스 점 찍기 (0) | 2023.01.13 |
| [파이썬] 프로그래머스 주차 요금 계산 (0) | 2023.01.13 |
| [파이썬] 프로그래머스 숫자 카드 나누기 (0) | 2023.01.11 |