개요
BFS 나 재귀와 같이 특정 자료구조 혹은 알고리즘에 종속되지 않고 주어진 문제 상황을 구현하면 되는 유형.
•
이때 구현하기 매우 어려운 문제 유형을 시뮬레이션 유형의 문제
•
배경 지식보다 문제를 이해하고 소스코드로의 구현력을 많이 필요로 한다.
시뮬레이션 (Simulation)
풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제
종류
•
알고리즘은 간단하지만 코드가 지나칠 만큼 길어지는 문제
•
실수 연산을 다루고 특정 소수점 자리까지 출력해야 하는 문제
•
문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제
•
적절한 라이브러리를 찾아서 사용해야 하는 문제
특징
•
일반적으로 2차원 공간을 다루는 문제의 유형
◦
2차원 공간을 다루기 위해 행렬(Matrix) 개념을 사용
◦
이차원 공간에서 방향 벡터가 자주나옴.
문제 1 - 상하 좌우
여행가 A는 N * N 크기의 정사각형 공간에 위치한다.
이 공간은 1 * 1 크기의 정사각형으로 구성되어 있음.
가장 왼쪽 위 좌표는 (1,1), 가장 오른쪽 아래 좌표는 (N, N)이다.
여행가 A는 상, 하, 좌, 우 방향으로 이동 가능하며 시작좌표는 (1,1)
여행가 A가 이동할 계획서
* 입력 조건
- 첫째 줄에 공간의 크기를 나타내는 N이 주어진다 (1 <= N <= 100)
- 둘째 줄에 여행가 A가 이동할 계획서 내용이 주어진다. (1 <= 이동횟수 <= 100)
5
R R R U D D
* 출력 조건
- 첫째 줄에 여행가 A가 최종적으로 도착할 지점의 좌표 (x, y)를 공백을 기준으로 구분하여 출력.
3 4
C
n = int(input())
x, y = 1, 1
plans = input().split()
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
direction = ['L', 'R', 'U', 'D']
for plan in plans:
for i in range(len(direction)):
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)
C