꺼내먹는지식 준

SW Expert 아카데미 4112. 이상한 피라미드 탐험 본문

코딩테스트총정리/구현

SW Expert 아카데미 4112. 이상한 피라미드 탐험

알 수 없는 사용자 2022. 2. 12. 22:54

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=5&contestProbId=AWJHmLraeEwDFAUH&& 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

풀이 방법: 

층 이동에는 1 번만 움직이면 된다. 

층 이동하며 동시에 양 옆 1칸 접근이 가능하니, 층 차이에 따라 왼쪽 오른쪽으로 몇칸 움직일 수 있는지 바로 알 수 있다. 

민지의 최대 이동거리 보다 멀리 있으면 그 만큼 더해주면 된다. 

s , t = list(map(int, input().split()))
low, high = 0, 0
if t < s: s,t = t,s

def find_rc(n,r):
    while(True):
        if r*(r-1) // 2 < n <= r*(r+1)// 2:
            c = n - r*(r-1)//2 
            return r, c 
        r += 1 

s_r, s_c = (1, 1) if s == 1 else find_rc(s,2)
t_r, t_c = (1, 1) if t == 1 else find_rc(t,2)

low = t_r - s_r
if 0 <= t_c - s_c <= low:
    answer = t_r - s_r 
elif t_c - s_c < 0:
    answer = t_r - s_r + (s_c - t_c)
else:
    answer = t_r - s_r + (t_c - s_c- low) 

print(answer)

 

Comments