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)
'CodingTest > 완전 탐색(구현)' 카테고리의 다른 글
프로그래머스 (Level 1) - 모의고사 (0) | 2022.08.07 |
---|---|
문자열 재정렬 (0) | 2022.07.07 |
왕실의 나이트 (0) | 2022.07.06 |
특정 문자열을 포함한 시각구하기 (0) | 2022.07.06 |
구현 이론 (0) | 2022.07.05 |