๐ ๋ฌธ์
๊ฐ๋ก A(1≤A≤100), ์ธ๋ก B(1≤B≤100) ํฌ๊ธฐ์ ๋ ์ด ์๋ค. ์ด ๋ ์์ ๋ก๋ด๋ค์ด N(1≤N≤100)๊ฐ ์๋ค.
๋ก๋ด๋ค์ ์ด๊ธฐ ์์น๋ x์ขํ์ y์ขํ๋ก ๋ํ๋๋ค. ์์ ๊ทธ๋ฆผ์์ ๋ณด๋ฏ x์ขํ๋ ์ผ์ชฝ๋ถํฐ, y์ขํ๋ ์๋์ชฝ๋ถํฐ ์์๊ฐ ๋งค๊ฒจ์ง๋ค. ๋ํ ๊ฐ ๋ก๋ด์ ๋งจ ์ฒ์์ NWES ์ค ํ๋์ ๋ฐฉํฅ์ ํฅํด ์ ์๋ค. ์ด๊ธฐ์ ์ ์๋ ๋ก๋ด๋ค์ ์์น๋ ์๋ก ๋ค๋ฅด๋ค.
์ด๋ฌํ ๋ก๋ด๋ค์ M(1≤M≤100)๊ฐ์ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ค๊ณ ํ๋ค. ๊ฐ๊ฐ์ ๋ช ๋ น์ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค. ์ฆ, ํ๋์ ๋ช ๋ น์ ํ ๋ก๋ด์์ ๋ด๋ ธ์ผ๋ฉด, ๊ทธ ๋ช ๋ น์ด ์์๋ ๋๊น์ง ๊ทธ ๋ก๋ด๊ณผ ๋ค๋ฅธ ๋ชจ๋ ๋ก๋ด์๊ฒ ๋ค๋ฅธ ๋ช ๋ น์ ๋ด๋ฆด ์ ์๋ค. ๊ฐ๊ฐ์ ๋ก๋ด์ ๋ํด ์ํํ๋ ๋ช ๋ น์ ๋ค์์ ์ธ ๊ฐ์ง๊ฐ ์๋ค.
1. L: ๋ก๋ด์ด ํฅํ๊ณ ์๋ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ผ๋ก 90๋ ํ์ ํ๋ค.
2. R: ๋ก๋ด์ด ํฅํ๊ณ ์๋ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฅธ์ชฝ์ผ๋ก 90๋ ํ์ ํ๋ค.
3. F: ๋ก๋ด์ด ํฅํ๊ณ ์๋ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์์ผ๋ก ํ ์นธ ์์ง์ธ๋ค.
๊ฐํน ๋ก๋ด๋ค์๊ฒ ๋ด๋ฆฌ๋ ๋ช ๋ น์ด ์๋ชป๋ ์๋ ์๊ธฐ ๋๋ฌธ์, ๋น์ ์ ๋ก๋ด๋ค์๊ฒ ๋ช ๋ น์ ๋ด๋ฆฌ๊ธฐ ์ ์ ํ ๋ฒ ์๋ฎฌ๋ ์ด์ ์ ํด ๋ณด๋ฉด์ ์์ ์ฑ์ ๊ฒ์ฆํ๋ ค ํ๋ค. ์ด๋ฅผ ๋์์ฃผ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ชป๋ ๋ช ๋ น์๋ ๋ค์์ ๋ ๊ฐ์ง๊ฐ ์์ ์ ์๋ค.
1. Robot X crashes into the wall: X๋ฒ ๋ก๋ด์ด ๋ฒฝ์ ์ถฉ๋ํ๋ ๊ฒฝ์ฐ์ด๋ค. ์ฆ, ์ฃผ์ด์ง ๋ ์ ๋ฐ์ผ๋ก ๋ฒ์ด๋๋ ๊ฒฝ์ฐ๊ฐ ๋๋ค.
2. Robot X crashes into robot Y: X๋ฒ ๋ก๋ด์ด ์์ง์ด๋ค๊ฐ Y๋ฒ ๋ก๋ด์ ์ถฉ๋ํ๋ ๊ฒฝ์ฐ์ด๋ค.
๐์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ ์ ์ A, B๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ ๋ ์ ์ N, M์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ ๊ฐ ๋ก๋ด์ ์ด๊ธฐ ์์น(x, y์ขํ ์) ๋ฐ ๋ฐฉํฅ์ด ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ ๋ช ๋ น์ด ๋ช ๋ น์ ๋ด๋ฆฌ๋ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ๋ช ๋ น์ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ๋ก๋ด, ๋ช ๋ น์ ์ข ๋ฅ(์์ ๋์ ์๋), ๋ช ๋ น์ ๋ฐ๋ณต ํ์๋ก ๋ํ๋ธ๋ค. ๊ฐ ๋ช ๋ น์ ๋ฐ๋ณต ํ์๋ 1์ด์ 100์ดํ์ด๋ค.
๐์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์๋ฎฌ๋ ์ด์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ OK๋ฅผ, ๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ ์์ ํ์๋๋ก ์ถ๋ ฅ์ ํ๋ค. ๋ง์ฝ ์ถฉ๋์ด ์ฌ๋ฌ ๋ฒ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ฅ ๋จผ์ ๋ฐ์ํ๋ ์ถฉ๋์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๐ ๋ฌธ์ ํ์ด
๊ทธ๋ํ๋ฅผ ๋ง๋ค๊ณ ๋ก๋ด์ ์์น๋ฅผ ํ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ช ๋ น์ค๋๋๋ก ํ์ ์ํค๊ฑฐ๋ ์ด๋ํ๊ณ ๊ทธ๋ํ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ ๋ก๋ด๋ผ๋ฆฌ ์ถฉ๋ํ๋ค๋ฉด ์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ ๊ตฌํ ๋ฌธ์ ์๋ค.
๋ฌธ์ ์์ ๊น๋ค๋ก์ ๋ ์ ์ ์ขํ๊ฐ ์ด์ ๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅธ ํํ, ์ฆ ์๋์์ ๋ถํฐ ์๋ก ์ซ์๊ฐ ์ฆ๊ฐํด์ ์กฐ๊ธ์ ํท๊ฐ๋ ธ๋๊ฑฐ ๊ฐ๋ค.
๋ก๋ด์ ์์น์ ๋ฐฉํฅ์ ์ ์ฅํ dict๋ฅผ ๋ง๋ค์ด๋๊ณ , ๊ทธ๋ํ์๋ ๋ก๋ด์ ๋ฒํธ๋ฅผ ์ ์ด๋์๋ค.
ํ์ ์ list์ N, W, S, E ์์ผ๋ก ์ ์ฅํด๋๊ณ ์ธ๋ฑ์ค ๊ณ์ฐ์ผ๋ก %4 ๋๋จธ์ง ์ฐ์ฐ์ผ๋ก ํ์ ๋ฐฉํฅ์ ์ ํ์๋ค.
์ ์ง ๋ช ๋ น์ dict ์๋ฃํ์ ๋ง๋ค๊ณ ํค ๊ฐ์ N, W, S, E ๊ทธ๋ฆฌ๊ณ ๋ฐธ๋ฅ๋ ์ขํ๋ณํ๋ฅผ ์ฃผ์๋ค.
๋ก๋ด์ด ์ด๋ํ์๋ค๋ฉด ์ด์ ์์น๋ ์ง์์ฃผ๊ณ ์๋ก ์ด๋ํ ๊ณณ์ ๋ก๋ด์ ๋ฒํธ๋ฅผ ์ ์ด์ฃผ์๋ค.
๐ป ์ฝ๋
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import sys input = sys.stdin.readline a,b = map(int,input().split()) # ์ขํ ์ ๋ณด n,m = map(int,input().split()) # ๋ก๋ด๊ฐฏ์, ๋ช
๋ น์ด๊ฐฏ์ graph = [[0]*(a+1) for _ in range(b+1)] # ๊ทธ๋ํ robot = dict() # ๋ก๋ด์ ์์น ๊ทธ๋ฆฌ๊ณ ๋ฐฉํฅ ๋ด์ dict move = {'N':[1,0], 'W':[0,-1], 'S':[-1,0],'E':[0,1]} tmp = ['N','W','S','E'] res = 'OK' for i in range(1,n+1): x,y,c = map(str,input().rstrip().split()) x,y = int(x),int(y) graph[y][x] = i robot[i] = [y,x,c] for i in range(m): ro,code,move_cnt = map(str,input().rstrip().split()) ro = int(ro) nx = robot[ro][1] ny = robot[ro][0] pos = robot[ro][2] move_cnt = int(move_cnt) if code == 'L': move_cnt %= 4 now = (tmp.index(pos)+move_cnt)%4 robot[ro][2] = tmp[now] elif code=='R': move_cnt %= 4 now = (tmp.index(pos)-move_cnt)%4 robot[ro][2] = tmp[now] else: for j in range(move_cnt): nx = nx + move[pos][1] ny = ny + move[pos][0] # ์ธ๋ฑ์ค ๋ฒ์ด๋๋ค๋ฉด if 1 > nx or nx > a or 1 > ny or ny > b: if res == 'OK': res = f'Robot {ro} crashes into the wall' break # ์ด๋ํ ์๋ฆฌ์ ์ด๋ฏธ ๋ค๋ฅธ ๋ก๋ด์ด ์๋ค๋ฉด if graph[ny][nx] != 0: if res == 'OK': res = f'Robot {ro} crashes into robot {graph[ny][nx]}' break else: # ๋ณ๊ฒฝํ ์์น ๋ก๋ด ์ ์ graph[ny][nx] = ro # ์ด์ ์ ์๋ ์์น ์ง์ graph[robot[ro][0]][robot[ro][1]] = 0 # dict ๋ ๋ณ๊ฒฝ robot[ro][0] = ny robot[ro][1] = nx print(res) | cs |
๐ญ ์ํ์ฐฉ์ค
์ขํ์ค์ ์๋ฅผ ๋ค์ด graph[x][y] ๋ฅผ ์ ์ด์ผํ๋๋ฐ graph[y][x] ์ด๋ฐ ์์ผ๋ก ์ ๋ ์ค์๊ฐ ์์๋ค.
๐ ๋ฌธ์ ๋งํฌ ๋ก๋ด ์๋ฎฌ๋ ์ด์
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 14567๋ฒ: ์ ์๊ณผ๋ชฉ (Prerequisite) - ํ์ด์ฌ (0) | 2022.09.18 |
---|---|
[๋ฐฑ์ค] 5427๋ฒ: ๋ถ - ํ์ด์ฌ (0) | 2022.09.11 |
[๋ฐฑ์ค] 1219๋ฒ: ์ค๋ฏผ์์ ๊ณ ๋ฏผ - ํ์ด์ฌ (๋ฒจ๋ง ํฌ๋, BFS) (2) | 2022.08.28 |
[๋ฐฑ์ค] 1016๋ฒ: ์ ๊ณฑใดใด์ - ํ์ด์ฌ (0) | 2022.08.27 |
[๋ฐฑ์ค] 1041๋ฒ: ์ฃผ์ฌ์ - ํ์ด์ฌ (0) | 2022.08.20 |