01. 상하좌우
import sys
input=sys.stdin.readline
n=int(input())
plans=list(input().rstrip().split())
x,y=1,1
move_types=['L','R','U','D']
dx=[0,0,-1,1]
dy=[-1,1,0,0]
for plan in plans:
for i in range(len(move_types)):
if plan==move_types[i]:
nx=x+dx[i]
ny=y+dy[i]
if nx<1 or nx>n or ny<1 or ny>n:
continue
x=nx
y=ny
print(x,y)
02. 시각
import sys
input=sys.stdin.readline
n=int(input())
cnt=0
for i in range(0,n+1):
for j in range(0,60):
for k in range(0,60):
if '3' in str(i) or '3' in str(j) or '3' in str(k):
cnt+=1
print(cnt)
03. 왕실의 나이트
import sys
input=sys.stdin.readline
current=input().rstrip()
dx=[-1,-1,1,1,-2,-2,2,2]
dy=[-2,2,-2,2,-1,1,-1,1]
cnt=0
for i in range(8):
nx=ord(current[0])-97+dx[i]
ny=int(current[1])-1+dy[i]
if nx<0 or nx>=8 or ny<0 or ny>=8:
continue
cnt+=1
print(cnt)
04. 게임 개발
import sys
input=sys.stdin.readline
n,m=map(int,input().split())
x,y,direction=map(int,input().split())
game_map=list(list(map(int,input().split())) for _ in range(n))
visited=[[0]*m for _ in range(n)]
visited[x][y]=1
dx=[-1,0,1,0]
dy=[0,1,0,-1] # 북,동,남,서 방향 정의
# 왼쪽으로 회전
def turn_left():
global direction
direction-=1
if direction==-1:
direction=3
# 시뮬레이션 시작
count=1 # 방문한 칸의 수
turn_time=0 # 내가 현재 위차한 곳에서 방문할 수 없는 수
while True:
turn_left()
nx=x+dx[direction]
ny=y+dy[direction]
if visited[nx][ny]==0 and game_map[nx][ny]==0:
visited[nx][ny]=1
x=nx
y=ny
count+=1
turn_time=0
continue
else:
turn_time+=1
# 네 방향 모두 갈 수 없는 경우
if turn_time==4:
nx=x-dx[direction]
ny=y-dy[direction]
if game_map[ny][nx]==0:
x=nx
y=ny
else:
break
turn_time=0
print(count)