https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴www.acmicpc.net구현 시뮬레이션 문제이다.톱니를 구현할 배열을 deque를 사용해 만든다.톱니의 index 0은 12시방향,index 3는 3시 방향,index 6은 9시 방향이다.톱니가 시계 방향 즉 1로 회전한다면 큐의 마지막을 빼서 왼쪽에 넣는다.톱니가 반시계 방향 즉 -1로 회전한다면 큐의 왼쪽을 빼서 마지막에 넣는다.어떤 톱니가 어느 방향으로 회전하는지 값을 받는다기존 톱니의 6번index는 left에 2..
https://www.acmicpc.net/problem/3190 3190번: 뱀'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임www.acmicpc.net구현 시뮬레이션 + queue를 사용하는 문제이다. 뱀이 현제 어디 있는지 2차원 배열에 기록해서 뱀이 몸통에 충돌하는지 계산하고 뱀의 머리부터 몸통, 꼬리의 위치를 기록해서 시간이 지날때마다 뱀이 이동하도록 해야한다.2차원 배열에 뱀은 1로 사과는 2로 저장한다.뱀의 머리와 꼬리는 배열로 저장하는데 이때 머리부터 꼬리의 값을 계속 변경해주면 시간이 너무 걸리니 새로 이동하는 좌표를 배열의 머리로 넣어주고 배..
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽www.acmicpc.net구현 시뮬레이션 문제이다. 시키는 데로 코드를 작성하기만 하면 되서 편했다.2차원 room배열을 만들어서 벽, 청소하지 않은 공간을 표시해 둔다.문제어서 신경써야하는 부분은 일단 90도록 방향을 틀고 0을 찾는 다는 점과 후진을 하기 때문에 로봇이 바라보고있는 방향을 기록해야한다.나는 배열로 관리했다. 북을 기준으로 90도씩 시계 반대로 회전함으로 다..
https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부www.acmicpc.net구현 시뮬레이션 문제이다. 시키는 데로 코드를 작성하기만 하면 되서 편했다.벨트를 구현할 배열을 deque를 사용해 만든다. 로봇의 위치를 저장할 배열또한 만든다.단계가 진행되는 만큼 stage를 증가 시키고 count로 내구도가 0이 몇개가 생겼는지 기록한다.벨트가 각 칸위에 있는 로봇과 함께 한칸 회전한다.이때 컨베이어 벨트는 pop하고 appendleft해서 회전을 구현한다...
https://www.acmicpc.net/problem/10026 10026번: 적록색약적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)www.acmicpc.netDFS탐색 문제이다. 구역들을 입력받아서 2차원 배열로 만든다.우선 적록색약이 아닌 사람이 보는 구역들을 구하기 위해서 R,B,G를 따로 DFS로 탐색한다.2번을 진행하는 동안 R과 G는 0으로 교체, B는 1로 교체한다. 적록색약인 사람이 보는 구역들을 구하기 위해서 이다.0,1을 구분으로 구역이 몇개로 나누어져 있는지 DFS로 탐색한다.4번에서 탐색한 지역은 2로 교체해서 탐색한 위치라는 걸..
https://www.acmicpc.net/problem/7576 7576번: 토마토첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토www.acmicpc.netBFS 넓이 우선 탐색 문제이다.토마토를 담을 상자역할을 할 2차원 배열을 만든다.익은 토마토가 어디에 있는지 알기 위해 1행을 읽어서 익은 토마토의 좌표를 기록해둔다.2번에서 기록한 토마토의 좌표 모두를 좌우앞뒤로 움직여서 그곳이 0(안익은 토마토)일 경우 0을 1로 바꾼뒤 3번을 진행하면서 기록한 좌표들로 익은 토마토의 좌표를 갱신해준다. 3번이 몇번 진행 되는지도 기록해준다.새로..