알고리즘 12

[백준 18808 번] 스티커 붙이기 C++

난이도: 골드 3 알고리즘 : 시뮬레이션 배열을 90도씩 회전하는 부분에 구현을 어떻게 해야할지 감이 잡히지 않아서 조금 해맸다. #include #include using namespace std; int n, m, k; int r, c; int pan[41][41] = { 0, }; int sticker[11][11] = { 0, }; void findSpace(int L); void patchSpace(int st_x, int st_y); void rotation(int L); void input() { cin >> n >> m >> k; for (int i = 0; i > r >> c; memset(sticker, 0, sizeof(sticker) / sizeof(i..

알고리즘 2023.12.25

[백준 15683번] 감시 C++

0. 과정 난이도 : 골드 4 풀이 방법 : DFS + BackTracking 해설: 기존에는 backtracking을 위해서 move에서 이동했던 것 만큼 다시 되돌려주었는데 6 6 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 5 0 0 0 0 5 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 답 : 2 다음 input값에서 무한루프가 돌았다. 따라서 다른 사람들의 풀이를 참고하니 굳이 moveBackTracking()를 통해 되돌려주는 대신 tmp 배열을 이용해 기존 방문했던 visited 배열을 저장했다가 다시 되돌려주는 방식을 이용하였다. 1. 첫 번째 풀이 #include #include #include using namespace std; int n, m; int pan[9][..

알고리즘 2023.12.18

백준[15663번] N과 M(9)

bool visited[10] : 자신과 중복되는 값을 제거하기 위해 사용 int xx : 중복순열을 제거하기 위해 이전에 입력한 값을 저장하고, 현재 받으려는 값과 비교하여 값이 같으면 중복 수열이므로 넘어가준다. #include #include #include using namespace std; int n, m; vector v; int res[10]; bool visited[10]; void dfs(int cnt) { if (cnt == m) { for (int i = 0; i m; int x; for (int i = 0; i > x; v.push_back(x); } sort(v.begin(), v.end()); dfs(0); ret..

알고리즘 2023.10.31

백준[2133번] 타일 채우기

참고자료: https://yabmoons.tistory.com/536 [ 백준 2133 ] 타일 채우기 (C++) 백준의 타일채우기(2133) 문제이다.[ 문제 바로가기 ] [ 문제풀이 ]3 x N 크기의 벽을 2 x 1 , 1 x 2 타일들로만 채울 때, 그 경우의 수를 구해야 하는 문제이다.작은 수들부터 차근차근 만들어보면서 하 yabmoons.tistory.com 사용되는 알고리즘 : dp * 특별한 경우를 잘 확인해야한다. => 이전 타일을 이용해서 쌓아가는 걸 제외하고 특별한 모양 * n이 홀수일 경우는 애초에 고려하지 않는다. => 3 * odd의 경우 넓이는 홀수값이 되는데 2*1 또는 1*2로 채우는 경우는 값이 무조건 짝수가 나와야 한다. #include using namespace st..

알고리즘 2023.10.30

백준[3197번] 백조와 호수

참고: https://codecollector.tistory.com/1184 (C++) - 백준(BOJ) 3197번 : 백조의 호수 https://www.acmicpc.net/problem/3197 3197번: 백조의 호수 입력의 첫째 줄에는 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1500. 다음 R개의 줄에는 각각 길이 C의 문자열이 하나씩 주어진다. '.'은 물 공간, 'X'는 빙판 codecollector.tistory.com 생각 못한 부분: 1. 백조의 현재위치도 어쨋든 물일 것이다. 2. 기존에 생각했던 것은 방문위치를 매 번 BFS를 돌릴 때마다 초기화했는데, 그렇게 되면 1500*1500 ~= 대략 200만 이걸 최악의 경우로 가정했을때 1500*1500*1500 => 시간제한에 걸..

알고리즘 2023.09.19