https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 문제 풀이: 저번에 푼 문제와 동일하게 BFS를 이용하여 최단 경로를 구한다. 단, 이전 문제와 마찬가지로 같은 칸에 도착하더라도 벽을 부순 경우와 부수지 않은 경우, 두가지를 따로 생각해야 하기에 3차원배열로 이를 구현했다. import Foundation let nm = readLine()!.split(separator: " ").map{ Int($0)! } var m..
https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 문제 풀이: bfs로 풀면 쉽게 풀릴듯 보이나, 한가지 고려해야할 점이 있다. O X O O X O O O O O X O 단 한번만 점프가 가능하다고 가정하고, 다음과 같이 지도가 존재한다고 할때, (0,0)에 위치한 원숭이가 x축으로 점프를 한다고 가정해보자. 그러면 원중이의 위치는 (1,3)으로 위치하게 되고, (1,3)은 방문처리 하면, 목적지로 점프할 수 없으니 해당 점프는..
https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 문제 풀이: bfs를 이용하여 방문한 위치를 체크. 지도를 초기화 할때, 뱀이 있다면 이동해야 하는 위치를 값으로 넣어주고 그 외의 칸은 0으로 처리. 이동하는 위치가 0이 아닌 값이라면 해당 값의 위치로 이동 및 방문 처리하는 방식으로 문제를 풀었다. import Foundation var map: [Int] = Array(repeating: 0, ..
https://www.acmicpc.net/problem/19237 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 상어의 현재 방향에 따라 방향의 우선순의가 다르고 격자안에 상어의 냄새에 따라 우선순의가 정해지므로, 이를 구조체로 정의해서 품. 각 상어의 우선순위 방향은 Dictionary로 정의해서 저장 import Foundation struct shark { enum Direction: Int { case on = 1 case under case left ca..
https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고, www.acmicpc.net 틀이 되는 풀이는 금방 알았지만.. 예외처리 할것들이 많았던 문제. 조합 + BFS + 부르트 포스를 이용하여 풀었다. 예외처리 할 부분은 비활성화된 바이러스의 처리 부분. 비활성화된 바이러스도 바이러스이므로 해당 부분을 다른 바이러스가 전이하지 않아도 바이러스가 존재한것으로 규정한다. 이에 따른 예외처리할것들이 꽤 있어서 고생했다. import Foundation let input = readLine(..
https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 단순 구현문제. 기어가 돌아가는 방식이 서로 다른 극일때 기어가 돌아 갈 수 있다. 즉 기어다 돌아가기 전에 다른 극이어야지만 돌아가지, 이전에 같은 극이었다가 기어가 돌아 간 후 다른 극이 된 상태에서는 돌아가지 않는다. 나같은 경우는 큐를 이용하여 rotate할 기어의 방향과 번호를 저장 후 큐에서 빼낸 후 해당 기어의 번호 +-1씩 해준 후 해당 번호의 기어가 돌아 갈 수 있다면 큐에서 ..