문제
캥거루 세 마리가 사막에서 놀고 있다. 사막에는 수직선이 하나 있고, 캥거루는 서로 다른 한 좌표 위에 있다.
한 번 움직일 때, 바깥쪽의 두 캥거루 중 한 마리가 다른 두 캥거루 사이의 정수 좌표로 점프한다. 한 좌표 위에 있는 캥거루가 두 마리 이상일 수는 없다.
캥거루는 최대 몇 번 움직일 수 있을까?
입력
여러개의 테스트 케이스로 이루어져 있으며, 세 캥거루의 초기 위치 A, B, C가 주어진다. (0 < A < B < C < 100)
출력
각 테스트에 대해 캥거루가 최대 몇 번 움직일 수 있는지 출력한다.
예제 입력 1 복사
2 3 5
3 5 9
예제 출력 1 복사
1
3
나의 풀이: 맞았다!
while True:
try:
A, B, C = map(int, input().split())
print(max(B-A, C-B)-1)
except:
break
다른 사람 풀이:
while True: # 테스트케이스의 개수가 주어지지 않음
try:
a, b, c = map(int, input().split())
except: # 테스트케이스가 더이상 주어지지 않는 경우
break
count = 0
while True:
dis_1 = b - a
dis_2 = c - b
if dis_1 == 1 and dis_2 == 1:
print(count)
break
if dis_1 <= dis_2: # a~b사이의 간격이 b~c사이의 간격보다 작거나 같은 경우
a, b = b, b+1 # a를 b+1로 이동 후, 좌표 순서대로 정렬
else:
b, c = b-1, b # c를 b-1로 이동, 좌표 순서대로 정렬
count += 1 # 움직인 횟수 1 증가
TAKEAWAY:
- 예로 100 200 250 지점에 캥거루가 있다면,
100 ~ 200 쪽이 200~ 250보다 더 공간이 넓으므로 250캥거루가 101 지점으로 점프,
100 101 200 에서 100 캥거루가 102로 점프.
101 102 200 에서 101 캥거루가 103으로 점프,
정답은 "넓은 공간의 캥거루의 간격 - 1"만큼이 점프횟수.
느낀점: