문제 링크

<aside> 💡 수학

</aside>

Memory 128832KB Time 176ms Code Length 496B

import sys
input = sys.stdin.readline

def n_t(d):
    i = 1
    sum = 0
    while(True):
        sum+=i
        if(sum >= d/2):
            break
        i += 1
    sum -= i
    diff = d/2 - sum
    ints = []
    for j in range(i):
        ints.append(j+1)
    if(diff*2 in ints):
        result = i*2-1
    else:
        result = i*2
    return result

n = int(input())
d = []
for i in range(n):
    x,y = map(int,input().split())
    d.append(y-x)

for i in range(len(d)):
    print(n_t(d[i]))

이 코드는 두 점 사이의 거리를 입력받아 이동해야 하는 최소 횟수를 출력하는 코드이다.

먼저, sys.stdin.readline을 이용해 입력을 받는다. 이후 n_t 함수에서는 입력받은 거리를 반으로 나눠 이동해야 하는 거리를 계산한다. 이 때, 이동할 거리가 정수가 아니라면 이동 횟수를 하나 늘린다.

그 다음에는 각 이동 횟수에 대해 이동해야 하는 거리를 계산하고, 이를 리스트에 저장한다. 만약 이동해야 하는 거리가 리스트에 있다면, 이동 횟수는 i*2-1이고, 그렇지 않다면 i*2이다.

마지막으로, 입력받은 모든 거리에 대해 이동 횟수를 계산하고 출력한다.