728x90
반응형
import math
c=0
p = []
casenumber = int(input())
while c <= casenumber-1:
x, d = input("").split()#출발지점
p.append(int(d) - int(x))
c = c+1
for m in p:
if m == 1:
print(1)
elif m ==2:
print(2)
else:
i = int(1)
g = 0
count = 3
z = []
while g <= m:
a = math.ceil(count / 2)
for i in range(a):
z.append(count)
count = count + 1
g = g + 1
print(z[m-3])
print(z)
2021년 12월 20일 현재 이렇게 짰을때 작동은 한다. 다만 시간초과 오류가 난다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 3 4 4 5 5 5 6 6 6 7 7 7 7 8 8 8 8
이러한 규칙을찾았다 이것을 잘 활용하면 더 효율적인 방법을 찾을것이다.
규칙을 하나 더 추가 해야 한다.
2 + 2 + 3 +3.... 해서 나오는 결과값을 대응해서 출력해주면 된다.
t = int(input())
for _ in range(t):
x, y = map(int,input().split())
distance = y - x
count = 0 # 이동 횟수
move = 1 # count별 이동 가능한 거리
move_plus = 0 # 이동한 거리의 합
while move_plus < distance :
count += 1
move_plus += move # count 수에 해당하는 move를 더함
if count % 2 == 0 : # count가 2의 배수일 때,
move += 1
print(count)
728x90
반응형
'Algorithm & Data Structure' 카테고리의 다른 글
DFS & BFS (0) | 2022.01.08 |
---|---|
백준 - 2108번 (0) | 2022.01.07 |
백준 - 1002번 (0) | 2021.12.23 |
백준 - 4948번 (0) | 2021.12.23 |
백준 - 2581번 (0) | 2021.12.21 |