본문 바로가기

Algorithm350

[BOJ]2206번: 벽 부수고 이동하기 (c++) https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로�� www.acmicpc.net bfs. map[x][y]에 도착했을 때의 상태값 저장 #include #include #include #include using namespace std; struct pos { int x, y; }; struct info { pos p; int left; // left 만큼 벽을 부술 수 있다 int dist; // 이동횟수 }; int N, M; int dr_x[.. 2020. 6. 15.
[BOJ]12886번: 돌 그룹 (c++) https://www.acmicpc.net/problem/12886 12886번: 돌 그룹 오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌 세개는 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려고 www.acmicpc.net bfs, 중복 체크 #include #include #include using namespace std; const int MAX = 500; bool visit[MAX * 2 + 1][MAX * 2 + 1]; int bfs(int A, int B, int C) { // 합이 3의 배수가 아니면 돌을 같은 개수로 나눌 수 없다. int sum = A + B + C; if (sum % 3) { .. 2020. 6. 14.
[BOJ]9019번: DSLR (c++) https://www.acmicpc.net/problem/9019 9019번: DSLR 문제 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스� www.acmicpc.net #include #include #include using namespace std; const int MOD = 10000; enum { D, S, L, R }; string dslr = "DSLR"; bool visit[MOD]; int bf[MOD]; char ops[MOD]; // D S L R 연산 결과 반환 int operation(int n, int op) { int .. 2020. 6. 14.
[BOJ]14502번: 연구소 (c++) https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net #include #include #include #include using namespace std; template using double_v = vector; struct pos { int x, y; }; int N, M; const int NEW_WALL = 3; enum {LAND, WALL, VIRUS}; int dr_x[] = { 0, 1, 0, -1 }; int dr_y[] = { 1, 0, -.. 2020. 6. 13.