문제https://www.acmicpc.net/problem/14500풀이테트로미노의 종류는 총 5가지이지만 Dfs를 통해 탐색을 할 수 있는 경우는 4가지다.ㅗ모양은 Dfs로 탐색을 할 수 없기에 따로 탐색하는 함수를 만들었다.이 경우에는 인접한 칸을 모두 검사했을 경우 그 중에 가장 작은 값을 빼서 최대값을 구하는 방법으로 구현했다.처음에 접근을 테트로미노마다 다른 Dfs를 만들어서 각각 다른 회전을 써야되나 싶어서 어려워한 문제다.문제를 좀 더 쉽게 풀 수 있는 방법부터 생각해보는 게 좋을 것 같다.소스코드#include #include using namespace std; #define MAX_SIZE 501 #define MIN_INF -987654321 #define MAX_INF 987654..
문제https://www.acmicpc.net/problem/14499풀이처음에는 주사위를 굴릴 때 윗면과 바닥면만 바뀌는걸로 생각하고 시작했다.문제에서 전개도를 준 점을 생각해보니 이동할 때마다 주사위의 상태를 바꿔줘야했다.주사위를 정육면체라고 생각하고 cube[6] 을 만들어 각 면의 정보를 저장했다.이동할 때 상태변화는 다음과 같다.# 동쪽으로 이동하는 경우 이전 칸에서의 오른쪽 면이 현재 칸에서의 바닥면이 된다.이전 칸에서의 왼쪽 면이 현재 칸에서의 윗면이 된다.이전 칸에서의 바닥면이 현재 칸에서의 왼쪽 면이 된다.이전 칸에서의 윗면이 현재 칸에서의 오른쪽 면이 된다.# 서쪽으로 이동하는 경우 오른쪽 -> 윗면왼쪽 -> 바닥윗면 -> 왼쪽바닥 -> 오른쪽# 북쪽으로 이동하는 경우 앞쪽 -> 윗면뒤..
문제https://www.acmicpc.net/problem/3190풀이DFS를 통해 게임을 진행하는 식으로 구현했다. 게임의 규칙은 다음과 같다. 뱀은 매 초마다 이동을 한다.뱀은 몸길이를 늘려 머리를 다음 칸에 위치시킨다.만약 이동한 칸에 사과가 있었다면, 그 칸에 있던 사과를 먹고 꼬리는 움직이지 않는다.사과가 없는 빈 칸이었다면, 꼬리를 이동시켜 다음 칸으로 간다(몸길이는 변하지 않는다.) 규칙에서 중요한 점은 아래와 같다. 사과가 없는 빈 칸을 이동할 때 꼬리였던 칸은 다시 빈 칸으로 만들어줘야 한다.방향에 따른 dx, dy를 만들어줬으며 map을 이용해 시간에 따른 뱀의 방향전환 상태를 저장했다.현재 시간에 해당하는 key가 map에 존재하면 그 value에 따라 뱀의 방향을 바꾸는 식으로 구..