성우리뷰
(softeer) 로봇이 지나간 길
두원공대88학번뚜뚜
2023. 4. 12. 13:52
import sys
def start(y, x):
global maxx, maxy, direc, direcnum
#4구석탱이인 경우나 하나 구석인 경우나 4면 다 뚫린 경우
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
cnt, dirr = 0, 0
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if nx < 0 or ny < 0 or ny >= maxy or nx >= maxx:
continue
if mp[ny][nx] == '#':
cnt = cnt+1
dirr = i
if cnt == 1:
if dirr == 0 :
direc, direcnum = '>', 0
elif dirr == 1:
direc, direcnum = 'v', 1
elif dirr == 2:
direc, direcnum = '<', 2
else:
direc, direcnum = '^', 3
return 1
else:
return 0
def dfs(y, x, direcnum):
#오아왼위
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
nextx, nexty, nextdir, keep = x, y, direcnum, 0
for i in range(4):
nx, ny = x + 2 * dx[i], y + 2 * dy[i]
if nx < 0 or ny < 0 or ny >= maxy or nx >= maxx:
continue
if direcnum - i == 2 or direcnum - i == -2:
continue
if mp[ny][nx] == '#' and mp[y + dy[i]][x + dx[i]] == '#':
keep = 1
#print(direcnum, i, direcnum - i)
if direcnum == i:
answ.append('A')
elif direcnum - i == -3:
answ.append('LA')
elif direcnum - i == 3:
answ.append('RA')
elif direcnum - i == -1:
answ.append('RA')
else :
answ.append('LA')
nextx, nexty, nextdir = x+2 * dx[i], y+ 2 *dy[i], i
break
if keep == 1:
dfs(nexty, nextx, nextdir)
return
maxy, maxx = map(int, input().split())
mp = [[] for _ in range(maxy)]
for i in range(maxy):
tmp = input()
mp[i] = tmp
#print(mp)
startx, starty, startflag, direc, direcnum = 0, 0, False, '.', 0
for i in range(maxy):
for j in range(maxx):
if mp[i][j] == '.' :
continue
if start(i, j) >= 1:
startx, starty, startflag = j, i, True
break
if startflag == True:
break
#오왼위아 : 0123
#print(direcnum)
answ = []
dfs(starty, startx, direcnum)
str = ''
for i in range(len(answ)):
str += answ[i]
print(starty+1, startx+1, '\n', direc, '\n', str, '\n')
#print(direc)
#print(str)