소요 시간 1시간 난이도 별하나 규칙을 찾기 보다 dfs로 만들고, 중복제거하고, 정렬(nlogn)하는 것이 맞는듯. #include #include #include #include using namespace std; char arr[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; string new_arr = ""; set answer; void dfs(int length) { if (new_arr.size() == length) { // 666이 가장 앞에 삽입될 경우 string s; s = "666" + new_arr; answer.insert(stoi(s)); // 666이 중간에 삽입될 경우 for (int i = 1; i < length;..
문제에 나와있는 그대로 자식이 4개인 트리를 생각하면 된다. 트리는 곧 그래프이고 그래프를 dfs방식으로 순환하면 된다. #include #include #include using namespace std; // dfs int arr[65][65] = {0}; int N = 0; int dx[4] = {0, 0, 1, 1}; int dy[4] = {0, 1, 0, 1}; int node_counter = 0; bool isMixed(int nx, int ny, int width) { bool isArrayMixed = false; if (width == 1) { return isArrayMixed; } for (int i = nx; i < nx + width; i++) { for (int j = ny; ..
https://www.acmicpc.net/problem/23290 23290번: 마법사 상어와 복제 첫째 줄에 물고기의 수 M, 상어가 마법을 연습한 횟수 S가 주어진다. 둘째 줄부터 M개의 줄에는 물고기의 정보 fx, fy, d가 주어진다. (fx, fy)는 물고기의 위치를 의미하고, d는 방향을 의미한다. 방향 www.acmicpc.net 난이도 구현 + dfs / 난이도 ⭐️⭐️⭐️ (오랜만에 풀어서 그런지 실수가 많았다) / 2일 ㅎㅎ... 분명 잘 짰는데 왜틀려? 라는 생각이 들면, 그냥 내가 틀린거다. 문제 조건을 빼먹고 구현하지 않았거나, 포문에서 i를 j로 썼다던지 실수가 있는것이 100%이다. 최초 구현 시, 예제 6번 부터 틀렸다는 결과가 나왔다. 예제 6번은 모든 과정을 10번 반복..
https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 주사위 윷놀이는 다음과 같은 게임판에서 하는 게임이다. 처음에는 시작 칸에 말 4개가 있다. 말은 게임판에 그려진 화살표의 방향대로만 이동할 수 있다. 말이 파란색 칸에서 이동을 시작하면 www.acmicpc.net 난이도 구현 + bfs / 난이도 ⭐️⭐️/ 1시간 35분 // board 0번째 줄 좌표 잘못 잡음 #include #include using namespace std; vector board; vector dice; int loc[4][2]; int check[5][22]; /* 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 10 13 ..
https://www.acmicpc.net/problem/20061 20061번: 모노미노도미노 2 모노미노도미노는 아래와 같이 생긴 보드에서 진행되는 게임이다. 보드는 빨간색 보드, 파란색 보드, 초록색 보드가 그림과 같이 붙어있는 형태이다. 게임에서 사용하는 좌표 (x, y)에서 x는 행, www.acmicpc.net 난이도 구현 / 난이도 ⭐️⭐️⭐️ / 1시간 40분 주의할점 1*2인 블럭이 떨어질 때, 블럭이 분리되지 않고 통째로 하나이다. #include #include #include using namespace std; // 6 * 4 int answer; int green[6][4]; int blue[6][4]; int N; // red 4 * 4 void creak(int row, st..
https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 난이도 구현 + bfs + dfs / 난이도 ⭐️⭐️/ 1시간 20분 주의할 점1 핵심은 1) bfs로 M개의 바이러스를 선택한 후, dfs를 수행하는 것이 아니라, 2) bfs로 모든 바이러스를 퍼트린 결과를 저장해둔뒤, dfs를 수행해야한다. 1) 방법으로 했을때는 같은 바이러스에 대해 dfs를 중복으로 수행하게 되므로 시간이 더 오래걸린다. 예전에 풀었던 방법이 생각나서 2) 방법으로 풀수있었던 것 ..
https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 난이도 1번: 구현(배열 회전) + DFS / 난이도⭐️⭐️⭐️/ 못품 2번: 구현(배열 회전) + DFS/ 난이도⭐️ / 1시간 주의할 점 처음 풀었을때는 배열을 슬라이스해서 90도 회전하는 부분이 가장 어렵게 느껴졌다. 두번째 풀었을때는 배열 회전하는 부분이 쉽게 풀려서 나머지 부분은 쉽게 풀었다. 함수를 분리하는게 가장 중요하다. #include #include #incl..
https://www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net 난이도 구현 / 난이도 ⭐️⭐️ / 1시간30분 소요 주의할 점 크기 어렵지 않으나, 실수한 부분이 많아서 오래걸렸다. 이런 문제의 경우 단계단계 구현결과를 확인하는게 좋은 것 같다. #include #include #include #include using namespace std; int N, M, T; // n: 원판 갯수 m: 원판 위 숫자 갯수 T : 원판 돌리기 케이스 ..