목록Algorithm (10)
일상의 기록
https://www.acmicpc.net/problem/14499 주사위를 각 방향으로 굴릴 때 어떻게 변하는지를 생각하는 게 생각보다 오래 걸렸다. 또한, 문제가 꼬여있는 부분이 두 군데 존재한다. x가 높이로, y가 너비로 주어졌다는 것. 즉 통상적인 문제와 x, y좌표가 반대로 주어져 있다. 두 번째로, 통상적으로 동서남북 순으로 생각하기 마련인데, 이 문제에서는 동서북남 순서로 주어져 있다. 문제를 꼼꼼히 읽는 것의 중요성을 알려주는 문제라고 생각한다. #include #include using namespace std; int n, m, x, y, k = 0; int dx[] = { 0, 1, -1, 0, 0 }; int dy[] = { 0, 0, 0, -1, 1 }; vector dice(6..
https://www.acmicpc.net/problem/12100 dfs 기반으로 풀이했다. #include #include using namespace std; // dfs로 풀이 // 매 번 상, 하, 좌, 우로 분기한다 // 맨 앞에 있는 블록부터 움직이려는 방향의 끝으로 이동시킨다. 만일 움직이다가, 자신이 가야 할 방향에 다른 블록이 있고, 그 블록과 나의 수가 동일하면 // 나를 없애고, 내 앞의 블록의 수를 *2한다. 이 때, 연쇄적으로 합쳐지는 것은 불가능하므로 숫자가 늘어난(합쳐진)블록은 자신이 이미 합쳐졌다는것을 가지고 있는다. // 모든 경우의 수에서 5번씩 움직인 후, 맵에 있는 숫자 중 가장 큰 것을 리턴한다. int N, answer = 0; vector MoveUp(vecto..