알고리즘
-
[백준 14502번 - 연구소] C++ 풀이알고리즘/삼성SW역량테스트기출 2021. 9. 18. 02:50
백준 14502번. 벽 3개를 추가로 세워서 바이러스가 퍼지지 않는 안전영역의 최대값을 구하는 문제이다. 사용한 알고리즘 - 브루트포스 - bfs 처음에는 벽 3개를 치는 경우의 수중 쳐낼 수 있는 가지수가 없나 생각을 해봤는데, 내 머리로는 도저히 떠오르지 않아서 그냥 다 구해보기로 했다. 3 = m || map[nx][ny] == 1 || map[nx][ny] == 2) { continue; } else { q.push(make_pair(nx, ny)); map[nx][ny] = 2; } } } } // 안전 영역 크기 구하기. for(int i = 0; i < n; ++i) { for(int j = 0; j < m; ++j) { if (map[i][j] == 0) result++; } } retur..
-
[백준 13458번 - 시험 감독] C++ 풀이알고리즘/삼성SW역량테스트기출 2021. 9. 17. 02:07
백준 13458번. 간단한 식을 세워 구할 수 있는 문제였다. 각 시험장을 돌면서, 최솟값은 1. 응시자의 수에서 1(=총 감독관)을 뺀 수를 C 로 나눈 만큼 더해주고, 나머지가 있다면 1을 더 더해주면 된다. B, C가 1이고, N이 백만, Ai가 각 백만 응시자수가 있다면, 정답이 약 백만*백만 = 일조 이므로, long long 타입으로 선언해줬다. 완성 코드 #include #include using namespace std; int main() { int n, b, c; vector a; scanf("%d", &n); for(int i = 0; i < n; ++i) { int tmp; scanf("%d", &tmp); a.push_back(tmp); } scanf("%d %d", &b, &c)..
-
[백준 3190번 - 뱀] C++ 풀이알고리즘/삼성SW역량테스트기출 2021. 9. 16. 22:27
백준 3190번. N x N 정사각 보드가 있고, 초기 상태의 뱀의 위치는 (0,0), 몸길이는 1이다. (보드 한칸 = 몸길이 1) 주어진 방향대로 1초에 한 칸만큼 이동한다. 만약 그 칸에 사과가 있으면 먹고, 꼬리는 그대로 둔 채 머리만 이동한다. (즉, 몸 길이가 늘어난다.) 만약 그 칸에 사과가 없으면, 머리와 꼬리가 같이 이동한다. (즉, 몸 길이는 그대로다.) 사용한 알고리즘은 다음과 같다. deque 시뮬레이션 간략한 설명 뱀의 몸이 있는 위치를 저장하기 위해서 deque 를 하나 두었다. deque 는 앞/뒤 양방향으로 push/pop이 가능하기 때문에 뱀의 길이와 머리, 꼬리 위치가 변함에 따라 좌표 저장이 용이할 것이라는 생각이 들었다. 사과의 위치를 저장하기 위한 map, 뱀의 몸이..