시뮬레이션 2

[ 백준 3190 ] 뱀 - Python

문제 보기 이 문제는 시뮬레이션 문제이다. 삼성 기출문제는 대부분 bfs로 풀거나 지도에서 움직이는 형태가 많은 것 같다. 이 문제 또한 지도에서 움직이는 형태이다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. - 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. - 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. - 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다. 문제에서 요구하는 사항을 하나씩 완성시키면 쉽게 구현할 수 있다. 알고리즘 수행 과정은 아래와 같다. 1. 2차원 배열(N x N)을 만든다. (0으로 초기화) 2. 사과의 위치에 1을 저장한다. 3. (0, 0)에서 뱀은..

[ 백준 14503 ] 로봇 청소기 - Python

문제 보기 로봇 청소기문제는 시뮬레이션 문제이다. 기존의 bfs 구현에서 아래 2가지를 추가해주면 된다. 1. 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행하기 때문에 현재 방향을 왼쪽방향으로 바꿔주는 함수 2. 현재 방향을 기준으로 후진을 하기 위해서 역방향으로 바꿔주는 함수 위 2가지를 추가해주고 기존의 bfs와 유사하게 코드를 구현하니 통과하였다. 코드 # boj 14503 # blog : jjangsungwon.tistory.com import sys from collections import deque # 북 동 남 서 dy = [-1, 0, 1, 0] dx = [0, 1, 0, -1] # 방향 전환 def change(d): if d == 0: # 북 -> 서 return 3 elif..