Profile

구현 / 시뮬레이션 / 완전 탐색 알고리즘 유형

개요

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