10158번: 개미
문제 )
가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오른쪽 위 45도 방향으로 일정한 속력으로 움직이기 시작한다. 처음에 (p,q)에서 출발한 개미는 1시간 후에는 (p+1,q+1)로 옮겨간다. 단, 이 속력으로 움직이다가 경계면에 부딪치면 같은 속력으로 반사되어 움직인다.
![](https://blog.kakaocdn.net/dn/kTYBY/btrs6aBDrgf/7oSCPkseK4YSU6TOttgzI0/img.png)
위 그림은 6×4 격자에서 처음에 (4,1)에서 출발한 개미가 움직인 길을 보여주고 있다. 처음에 (4,1)에 있는 개미는 2시간 후에 (6,3)에 있으며 8시간 후에 (0,1)에 있다. 만일 그 개미가 처음에 (5,3)에 있었다면 매 시간마다 (6,4), (5,3), (4,2), (3,1)로 움직인다.
여러분은 크기 w×h인 격자 공간에서 처음에 (p,q)에서 출발하는 개미의 t시간 후의 위치 (x,y)를 계산하여 출력해야 한다. 개미는 절대 지치지 않고 같은 속력으로 이동한다고 가정한다.
문제에서 w와 h는 자연수이며 범위는 2 ≤ w,h ≤ 40,000이다. 그리고 개미의 초기 위치 p와 q도 자연수이며 범위는 각각 0 < p < w과 0 < q < h이다. 그리고 계산할 시간 t의 범위는 1 ≤ t ≤ 200,000,000이다.
입력 :
첫줄에는 w와 h가 공백을 사이에 두고 주어진다. 그 다음 줄에는 초기 위치의 좌표값 p와 q가 공백을 사이에 두고 주어진다. 3번째 줄에는 개미가 움직일 시간 t가 주어진다.
출력 :
출력은 t 시간 후에 개미의 위치 좌표 (x,y)의 값 x와 y를 공백을 사이에 두고 출력한다.
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
w, h = map(int, input().split())
p, q = map(int, input().split())
n = int(input())
p += n # n만큼 움직인다.
q += n
p %= (2 * w) # 왕복 // 제자리로 돌아옴
q %= (2 * h)
# 주어진 좌표에서 초과했을 경우 제자리를 찾아준다.
if p > w:
p = (2 * w) - p
if q > h:
q = (2 * h) - q
print(p, q)
|
cs |
출처 : https://www.acmicpc.net/problem/10158
10158번: 개미
가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오
www.acmicpc.net
'Develop > 백준 (python)' 카테고리의 다른 글
[백준] 2605번: 줄 세우기 (python) (0) | 2022.02.12 |
---|---|
[백준] 10163번: 색종이 (python) (0) | 2022.02.12 |
[백준] 2477번: 참외밭 (python) (0) | 2022.02.12 |
[백준] 2578번: 빙고 (python) (0) | 2022.02.11 |
[백준] 2436번: 공약수 (python) (0) | 2022.02.11 |