CODING(18)
-
백준 알고리즘 17142_연구소 3 C
문제 (링크)17142번: 연구소 3 (acmicpc.net) 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 사고과정 먼저 4방향으로 퍼지고, 퍼지는데 걸리는 총 시간을 구하는 것이므로 bfs(queue)를 이용해야한다. 그리고 바이러스중 활성바이러스로 만들 것을 고르는 것은 N중 반복문이나 재귀함수를 사용하면 되는데 고르는 수가 변수이므로 재귀함수를 이용하면 편할 것이다. 그리고 각 경우 중 가장 짧은 소요시간을 구하는데, 어떤 경우에도 모든 칸을 확산시키지 못하면 -1을 출력해야 하므로 각 경우마다 전체 맵을 탐색..
2021.03.05 -
백준 알고리즘 17140_이차원 배열과 연산 C++
문제 (링크)17140번: 이차원 배열과 연산 (acmicpc.net) 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 사고과정 문제에서 r과 c는 1부터 시작한다고 하였으므로, 실제 배열에서는 A[r-1][c-1]을 탐색해야한다는 것을 주의해야한다. 또한 열과 행의 길이가 100을 넘지 않는다고 한 조건을 잘 활용해야한다. 또한 문제에서 특정한 정렬 조건을 제시하고 있으므로 map과 sort함수를 사용하면 편하겠다고 생각했다. 이후 c나 r연산을 할 때 한줄 씩 진행하면 된다. 내코드 #inclu..
2021.03.04 -
백준 알고리즘 17143_낚시왕 C
문제 (링크)17143번: 낚시왕 (acmicpc.net) 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 사고과정 처음 문제를 접할 땐 문제를 푸는 방법 자체는 그리 어렵지 않을 거라 생각했다. 하지만 상어의 정보를 어떤식으로 저장하느냐가 관건이었다. 그래서 나는 map에 상어의 이름을 저장하고, 그 상어의 이름을 index로 하는 구조체 배열에 상어의 정보를 저장했다. 이렇게 하면 map을 전체 탐색하지 않고 상어의 개수만큼만 탐색할 수 있기 때문이고, 필요없는 메모리 사용을 줄일 수 있..
2021.03.03 -
백준 알고리즘 17144_미세먼지 안녕 C
문제 (링크)17144번: 미세먼지 안녕! (acmicpc.net) 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 사고과정 문제에서 요구하는대로 먼지확산 -> 공기순환의 과정만 조건대로 구현하면 된다. 그래서 사용한 함수는 2개! 처음엔 탐색횟수를 줄이기 위해 먼지의 위치를 저장하는 배열을 만들까 했는데, 빈공간으로도 먼지가 확산되기 때문에 map전체를 탐색하는 것이 마음이 편할 것 같았다. 내코드 #include #include #define FRESHER -1 int width, height, time;..
2021.02.27 -
백준 알고리즘 16236_아기상어 C
문제 (링크)16236번: 아기 상어 (acmicpc.net) 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 사고과정 문제를 풀때 어떻게 접근할까 생각을하는데 조금 애먹은 문제다. 중 에 위치한 물고기를 먼저 먹으라는 조건이 있기 때문이다. 먼저, 최단 거리를 우선으로 찾으려면 bfs를 사용하는 것이 좋다. 현재 상어의 위치로부터 거리순으로 탐색할 수 있기 떄문이다. 대신 같은 거리에 존재하는 물고기가 여러마리면 위/왼쪽 방향의 물고기를 먼저 먹는다고 했으니 그 부분도 고려해줘야 한다. 최대한 피요없는..
2021.02.26 -
백준 알고리즘 5373_큐빙 C
문제 (링크)5373번: 큐빙 (acmicpc.net) 5373번: 큐빙 각 테스트 케이스에 대해서 큐브를 모두 돌린 후의 윗 면의 색상을 출력한다. 첫 번째 줄에는 뒷 면과 접하는 칸의 색을 출력하고, 두 번째, 세 번째 줄은 순서대로 출력하면 된다. 흰색은 w, 노란 www.acmicpc.net 사고과정 이전에 풀었던 주사위 문제와 비슷한 결이다. 주의해야할 점은 각 면을 바라볼 때 어디를 기준으로 삼을 것인가 이다. 또한 큐브를 돌릴 때 변하는 것들의 index에 유의해야한다. 먼저 회전하는 면의 중심점을 기준으로 주위 8칸을 회전시켜준다. 이후 회전면과 맞닿아 있는 면들을 3칸씩 shift한다. 내코드 #include #include #define white 0 #define red 1 #defi..
2021.02.25