728x90
문제
1 번부터 n 번까지 총 n 개의 공간이 있는 1차원 배열의 x 번 위치에 사람이 있다. 이 사람은 초기 방향 d 로 1 초에 한 칸 씩 이동하는데, 배열의 끝에 도착하면 다음 이동 시 뒤로 돌아서 반대 방향으로 이동한다. t 초 뒤 이 사람의 위치와 방향을 출력하여라.
d 가 0 이면 좌표가 감소하는 방향, d 가 1이면 좌표가 증가하는 방향으로 이동한다.
입력
첫 줄에 정수 n, x, d, t 가 주어진다.
(3 ≤ n ≤ 1,000,000,000, 1 ≤ x ≤ n, 0 ≤ d ≤ 1, 0 ≤ t ≤ 1,000,000,000)
출력
t 초 후 사람의 위치와 방향을 출력한다.
입력의 예 1
6 4 0 5
출력의 예 1
3 1
입력의 예 2
5131 555 0 35491
출력의 예 2
4158 1
입력의 예 3
21354 3124 0 861231
출력의 예 3
3989 1
입력의 예 4
463571372 78942314 1 1000000000
출력의 예 4
151799572 1
#코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import sys
if __name__ == "__main__":
input = sys.stdin.readline
n, x, d, t = map(int, input().split())
t %= (2*n-2)
dx = [-1, 1]
while x+t*dx[d] < 1 or x+t*dx[d]>n:
if x+t*dx[d]<1:
t -= x-1
x=1
d=1
elif x+t*dx[d]>n:
t -= n-x
x = n
d = 0
x += t*dx[d]
print(x, d)
|
cs |
반응형
'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글
이동 알고리즘 2 (0) | 2021.06.18 |
---|---|
2차원 큰 이동 (0) | 2021.06.18 |
N명 이동 (0) | 2021.06.17 |
ICEBERG[백준 2573] (0) | 2021.06.16 |
SLIKAR (0) | 2021.06.16 |