전체 글 29

BOJ 15686 치킨 배달

https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 www.acmicpc.net 문제 해결전략 이 문제는 조합 + 브루트 포스 문제이다. M 보다 큰 치킨집의 개수에서 M개를 선택하여 집까지 거리를 구하는 문제이다..

BOJ 14502 연구소

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. www.acmicpc.net 문제 해결전략 연구소 문제는 DFS와 BFS를 혼합한 문제이다. 문제 해결의 순서 DFS를 통해 map의 빈 공간에 벽 3개 배치 -> t..

BOJ 3190 뱀

https://www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따 www.acmicpc.net 문제 해결전략 이 문제를 해결하기 위한 핵심은 뱀의 꼬리 좌표와 머리 좌표를 추적하는(?) 것이라고 생각한다. 뱀이 이동할 것인지 또는 사과를 ..

BOJ 14501 퇴사

https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 해결전략 주로 DFS 또는 DP를 이용하는 문제이다. DFS(완전 탐색)을 이용하여 해결하였다. 처음에는 day를 순차적으로 1->2->3->4->5->6->7->8까지 보내고, 7부터 차례대로 7->6->5->4->3->2->1 내려오면서 조건 확인과 계산(재귀)을 시작한다. 그림으로 간단히 표현하면 다음과 같다. (종료 조건은 N+1이다.) #include using namespace std; int n; int t[16]; int p[16]; int maxNum; int max(int a, int b){ return a >..

BOJ 1389 케빈 베이컨의 6단계 법칙

https://www.acmicpc.net/problem/1389 문제해결전략 bfs 이용 map에 연결된 그래프를 저장을 한 후, 순차적으로 탐색을 하며 visited배열에 값을 저장한다. visited 배열에 저장된 값의 합을 sum에 저장하고 minNum에 갱신하고 노드의 번호를 kevin 변수(케빈 베이컨의 수가 가장 작은 사람을 저장하는 변수)에 저장한다. (순차적으로 탐색을 하기에 더 작은 sum 값이 나오지 않은 이상, kevin을 따로 갱신할 필요가 없다.) 2차원 배열을 선언하여 연결된 그래프의 값을 1로 저장 2중 반복문을 이용하여 첫번째 노드부터 순차적으로 탐색(다음 노드를 탐색할 때, visited배열과 sum값을 초기화) 첫번째 노드부터 1부터 n까지 탐색한다. 탐색 하면서 map..