n = int(input())
way = list(map(str, input().split()))
lrud = "LRUD"
lrudList = [[0,-1], [0,1], [-1,0], [1,0]]
i, j = 1, 1
for w in way :
point = lrudList[lrud.index(w)]
ni = i + point[0]
nj = j + point[1]
if 1 <= ni <= n and 1 <= nj <= n :
i = ni
j = nj
print(i, j)
n = int(input())
num = 0
for h in range(0, n+1) :
for m in range(0, 60) :
for s in range(0, 60) :
if "3" in str(h) or "3" in str(m) or "3" in str(s):
# 어차피 문자열이기 때문에 "3" in str(h) + str(m) + str(s) 로 사용 가능
num += 1
print(num)
alpha = " abcdefgh"
a, n = map(str, input())
pa = alpha.index(a)
pn = int(n)
point = [[-1, 2], [1, 2], [-1, -2], [1, -2], [-2, 1], [-2, -1], [2, 1], [2, -1]]
answer = 0
for i in range(8) :
da = pa + point[i][0]
dn = pn + point[i][1]
if 1 <= da <= 8 and 1<= dn <= 8 :
answer += 1
print(answer)
n, m = map(int, input().split())
a, b, d = map(int, input().split())
graph = []
for _ in range(n) :
graph.append(list(map(int, input().split())))
# 0,1,2,3 : 북, 동, 남, 서
direct = [[0,-1], [-1, 0], [0, 1], [1, 0]]
backdirect = [[1,0],[0,-1],[-1,0],[0,1]]
graph[a][b] = 1
check = 0
answer = 1
while True :
da = a + direct[d][0]
db = b + direct[d][1]
if check == 4:
ba = da + backdirect[d][0]
bb = db + backdirect[d][1]
if 0 <= ba < n and 0 <= bb < m and graph[ba][bb] != 1:
a, b = ba, bb
check = 0
continue
break
if 0 <= da < n and 0 <= db < m :
# 가보지 않은 칸
if graph[da][db] == 0 :
graph[da][db] = 2
a, b = da, db
check = 0
answer += 1
d -= 1
if d < 0 :
d = 3
continue
check += 1
# 맵 범위 외 공간이거나 이미 가본 칸/바다
d -= 1
if d < 0 :
d = 3
print(answer)
풀이
답지는 풀이가 엄청 긴데 내가 푼 풀이는 너무 짧아서 맞는지 사실 모르겠다.
일단 북, 동, 남, 서 방향에서 왼쪽 칸을 확인할 때를 위해 direct 배열을 만들었고,
da, db를 통해 해당 칸의 값이 무엇인지 받아왔다.
값이 육지인 0이라면 방문표시를 해주고 a,b 값을 바꿔준다. 그리고 방향을 현재 기준에서 왼쪽으로 돌리는데 보니까 왼쪽으로 돌릴 때마다 d 값이 -1되는 걸 알 수 있다. 북쪽(0)에서 -1하면 서쪽(3)이니까 이때는 조건문으로 d = 3
그다음 check 변수를 이용해서 4번동안 가본 칸이나 맵 바깥쪽, 바다인 칸을 확인한 경우
먼저 뒤쪽이 육지인지 여부를 확인해서 육지이면 현재 좌표를 뒤로 옮긴다.
그런데 육지가 아니면 break
얼레벌레 흐름도
일단 대충 내가 작성한 코드를 바탕으로 흐름도를 작성했는데...
예시 답안이 없어서 맞는지 모르겠다.
일단 여기에 매달릴 시간 없으니까 패스