CodingTest/완전 탐색(구현)
상하좌우 여행가
seongduck
2022. 7. 5. 16:27
1. 문제 설명
2. 문제 조건
3. 문제 해결 아이디어
- 요구사항대로 충실히 구현
- 시물레이션 유형으로 구현이 중요한 문제
4. 풀이
N = int(input())
position = list(map(str,input().split()))
#현재 서 있는 위치
x, y = 1, 1
#동, 북, 서, 남
dx = [0, -1, 0 ,1]
dy = [1, 0, -1, 0]
for i in position:
if((i == 'L') & (y-1 > 0)):#왼쪽으로 이동
x += dx[2]
y += dy[2]
if((i == 'R') & (y+1 <= N)):#오른쪽으로 이동
x += dx[0]
y += dy[0]
if((i == 'U') & (x-1 > 0)):#위로 이동
x += dx[1]
y += dy[1]
if((i == 'D') & (x+1 <= N)):#아래로 이동
x += dx[3]
y += dy[3]
print(x,y)
문제 그대로 벽에 닿으면 못가도록 조건만 하나 걸어주는 간단한 로직
4-1. 표준 답안
n = int(input())
x, y = 1, 1
plans = input().split()
dx = [0, 0, -1 ,1]
dy = [-1, 1, 0, 0]
move_types = ['L','R','U','D']
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 ny < 1 or nx > n or ny > n:
continue
x, y = nx, ny
print(x,y)