목록백준/시뮬레이션,구현 (22)
Study hard

www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net [풀이] 문제에 나온 톱니바퀴의 회전 규칙을 구현하는 문제였다. w[n][i]에 n번 톱니바퀴의 i번째 칸의 극을 저장하였다. 그리고 K번 톱니바퀴 번호와 방향을 받을때마다 톱니바퀴들을 회전시켰다. 2번 톱니바퀴를 회전시킨다고 할 때 w[2][6]과 w[1][2]가 같으면 1번 톱니바퀴도 같이 반대방향으로 회전해야한다. 그리고 w[2][2]와 w[3][6]이 같으면 3번 톱니바퀴도 회전해야한다. →재귀함수로..

www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net [풀이] 문제에 있는 조건대로 구현하는 문제였다. bfs를 응용하여 풀었다. 경사로 조건 1. 경사로는 낮은 칸에 놓으며, L개의 연속된 칸에 경사로의 바닥이 모두 접해야 한다. →지금까지 거쳐온 칸 수 저장, 칸 수 ≥ L이면 놓을 수 있다. →낮아지는 경우에는 y + L번째 칸까지 같은 높이인지 확인 2. 낮은 칸과 높은 칸의 높이 차이는 1이어야 한다. →(Map[x][ny] == Map[x][y]+1)인 경우와 (Map[x][..

www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net [풀이] 문제에 나와있는 조건을 모두 구현하면 되는 문제였다. 구현한 것 1. 2^N * 2^N 얼음판을 2^L * 2^L 크기의 격자로 나누어 시계방향으로 90도 회전 → 각 격자의 가장 바깥쪽부터 안쪽으로 순서대로 회전시켜주었다. (Turn함수) 2. 각 얼음이 있는 칸에 대하여 얼음이 있는 인접한 칸이 3개 미만인 칸 저장(checkSurround함수) ※조건에 해당하는 칸을 볼때마다 ..

www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net [풀이] 문제에 있는 조건들을 구현하면 되는 문제였다. 구현한 것 1. 토네이도 모양대로 이동하기 -while문 안에 for문 두 개로 구현하였다. 헷갈려서 Map 배열에 경로 저장하고 출력하여 확인했다. -방향은 왼쪽 → 아래쪽 → 오른쪽 → 위쪽 순서 반복 2. 모래를 비율과 a가 적혀있는 칸으로 이동시키기(방향 생각!) -비율을 p정수 배열에 저장해놓고, 왼쪽, 아래쪽, 오..

www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net [풀이] 먼저 파이어볼의 질량, 속력, 방향을 저장하는 구조체 벡터 배열(vectorball[51][51])에 파이어볼의 정보를 저장하는 것으로 시작하였다. 구현한 함수 1. 모든 파이어볼을 자신의 방향 d로 속력 s칸 이동시키는 함수(여러 파이어볼이 한 칸에 함께 있을 수 있다) 2. 2개 이상의 파이어볼이 있는 곳 조건에 맞게 처리하는 함수 ※문제를 잘못 이해해서 2개..

www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net [풀이] 문제에 있는 순서대로 구현해주면 풀 수 있는 문제였다. 먼저 구조체 배열에 컨베이어 벨트 한 칸의 정보(로봇이 있는지, 해당 칸의 내구도)를 저장하는 것으로 시작하였다. 구현한 함수들 1. 벨트를 한 칸씩 회전시키는 함수 2. 로봇을 벨트가 회전하는 방향으로 한 칸씩 이동시키는 함수(이동할 수 있는 조건 有) +1번 칸에 로봇 올리기 3. 내구도가 0인 칸의 개수가 K개 이상인지 ..