분류 전체보기
-
[BOJ]17142번 연구소3알고리즘/BOJ 2020. 8. 17. 23:38
https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 아이디어 1, 활성화시킬 바이러스들을 next_permutation함수를 이용하여 택하고 bfs방법을 이용하여 퍼지는 시간을 구하였다. 2, 백트레킹 방식을 이용하여 탐색을 하다가 현재 구해놓은 최소 시간 이상 탐색을 실행할 시 실행을 중지하고 다음 케이스를 bfs방식으로 탐색을 하였다. 3, 문제의 조건에서 모든 영역에 바이러스가 있으면 종료가 됨으로(비활성화 된 바이러스도 바이러스다.) 빈칸의 수만큼 ..
-
[BOJ]17143번 낚시왕알고리즘/BOJ 2020. 8. 17. 23:33
https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 아이디어 1, 상어의 위치, 속력, 이동방향, 크기를 구조체로써 관리하고 현재 상어들을 벡터로써 관리를 하였다. 2, 3가지의 simulation함수를 이용하여 구현을 해 주웠다. 1) 낚시꾼의 이동을 바꾸고 해당 낚시꾼이 있는 위치에서 어느 상어가 가장 위에 있는지 판별 2) 낚시꾼이 상어를 잡고 해당 상어는 관리하는 벡터에서 삭제를 시켜 주웠다. 3) 벡터를 순회하면서 상어..
-
[BOJ]16235번 나무 제태크알고리즘/BOJ 2020. 8. 16. 03:39
https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 아이디어 1, 나무의 정보를 deque로써 관리를 하고 나이가 적은 나무 쿠터 검사를 진행하기 때문에 나이 순으로 오름차순 정렬을 해 준다. 2, 봄 부분에서 나무가 양분을 먹어 살아남는지에 대한 유무와 나이를 먹고 5의 배수가 됐는지 확인하여 각각의 벡터 배열로써 관리를 해 준다.(여름 가을 부분에서 사용) 이 이외에 살아남은 나무는 따로 다시 원래의 나무 deque에 저장하여 ..
-
[BOJ]16236번 아기 상어알고리즘/BOJ 2020. 8. 16. 02:21
https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가�� www.acmicpc.net 아이디어 1, bfs방식으로 아기 상어의 위치를 시작으로 지도를 순회한다. 2, 한 번씩 움직일 때마다 아기 상어가 물고기를 먹었는지 판별 - 2개의 큐로 관리 - 큐 하나는 움직이기 전 상태, 다른 하나는 움직인 후의 상태를 저장하여 물고기를 먹었는지 판별 - 움직인 후의 큐에 대하여 먹을 수 있는 물고기의 위치에 도달하였을 시 벡터에 저장을 하고 문제 조건에 따라 맨 위 오른쪽인 위..
-
[BOJ]16234번 인구 이동알고리즘/BOJ 2020. 8. 14. 17:07
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모�� www.acmicpc.net 아이디어 1, map에 현제 구역인 인구의 수를 저장을 하고 bfs방법으로 group을 지어준다. 2, 매 턴마다 그룹이 지어진 나라들을 벡터로 관리를 하고 인구 수를 갱신한다. #include #include #include #include #include using namespace std; typedef struct country { int r; int c; int unit..
-
[BOJ] 17837번 새로운 게임2알고리즘/BOJ 2020. 8. 4. 02:27
https://www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하� www.acmicpc.net 아이디어 1, 문제의 조건에 따라서 시뮬레이션을 만들어 주웠다. 2, 시뮬레이션을 생성할 때 처리의 과정을 2 분류로 나누었다. 1) 위치를 이동시켰을 때 파란색 범위인지, 판을 벗어났는지의 여부를 먼저 판단하고 만약 그러한 상황이 되었다면 1차적으로 처리를 해 줌(방향을 반대로) 2) 첫 번째 처리과정을 거친 후 범위를 벗어난 경우/파란색 부분, 빨간색 부분, 흰색 부분에 따라 조건에 맞게..
-
[BOJ] 17140번 이차원 배열과 연산알고리즘/BOJ 2020. 7. 31. 19:14
https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 아이디어 1, 행 정렬과 열 정렬을 함수를 구분하여 동작하게 해 준다. 2, 행 혹은 열을 정렬할 때 각각의 숫자와 등장 횟수를 담는 구조체를 선언을 한 다음 벡터에 저장을 해 준다. 3, compare함수를 통하여 문제의 조건인 "등장 횟수가 커지는 식으로, 그 수가 같다면 수가 커지는 순으로" 벡터에 있는 구조체를 정렬한다. 4, 행 혹은 열을 위와 같은 방식으로 연산을 진행하고 ..
-
[BOJ] 15684번 사다리 조작알고리즘/BOJ 2020. 7. 31. 16:38
https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 처음에는 단순한 dfs방법으로 풀릴 줄 알았지만 시간 초과로 인하여 오래 걸렸던 문제이다. 문제의 핵심 조건 1, 가로선이 연속적으로 일직선이 될 수는 없다. 2, 가로선이 겹치는 경우는 존재하지 않는다. 3, 정답이 3보다 크면 -1을 출력한다. 아이디어 1, dfs방식으로 다리를 놓을 수 있는 경우의 수를 탐색한다. 2, 문제의 조건에서 "정답이 3보다 크면 -1을 출력한다."는 조건으로 인..