- Today
- Total
목록View All (355)
DATA101
📝 문제 https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 💡 접근법 문제에 주어진 조건을 빠짐 없이 고려하여 구현해야 정답을 맞출 수 있습니다. 낚시왕이 컬럼(column) 방향으로 움직이므로 컬럼을 기준으로 전체 로직이 수행됩니다. 컬럼이 결정되면 로우(row) 방향으로 상어가 있는지 탐색하고, 가장 작은 로우에 있는 상어를 낚습니다. 상어의 진행방향을 고려하여 상어의 속도까지 한 칸씩 이동시키며 상어가 이동 가능한지 체크..
📝 문제 https://www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 백준 내 아기 상어 문제의 후속 버전입니다. 💡 접근법 사용 알고리즘: DFS 알고리즘 상어가 잡아먹은 물고기 번호의 최댓값을 구해야 합니다. 상어가 어떤 물고기부터 잡아먹었는지, 그 순서에 따라 뒤이어 잡아먹을 수 있는 물고기 조합이 달라질 수 있습니다. 따라서 2번째 물고기를 선택하여 최대한 많이 먹을 수 있을 때까지 재귀적으로 물고기와 상어를 이동시켜 보는 로직을 ..
📝 문제 https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 💡 접근법 DFS 알고리즘을 활용하여 문제를 해결하였습니다. 문제 풀이는 다음과 같이 크게 세 부분으로 나눌 수 있습니다. 첫째, DFS 알고리즘을 활용하여 CCTV 종류별, 방향 전환에 따른 새로운 감시영역을 재귀적으로 탐색하는 함수 둘째, 특정 방향을 바라보는 CCTV의 최대 감시영역을 찾는 함수 셋째, 모든 CCTV에 대해 탐색이 끝나면 사각지대의 최솟값을 구하는 함수 C..
📝 문제 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 💡 접근법 DFS 알고리즘을 활용하여 문제를 해결하였습니다. 문제 풀이는 다음과 같이 크게 세 부분으로 나눌 수 있습니다. 첫째, 톱니바퀴를 시계 혹은 반시계 방향으로 회전시키는 함수 둘째, DFS 알고리즘을 활용하여 인접한 톱니바퀴의 회전 여부를 탐색하는 함수 셋째, \(K\)번의 회전 후에 최종적으로 점수를 계산하는 함수 특정 번호의 톱니바퀴에서 좌측과 우측에 인접한 톱니바퀴도 연..
📝 문제 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 💡 접근법 1) 알고리즘 및 자료구조 BFS 알고리즘과 큐(Queue) 자료구조를 활용하여 문제를 해결하였습니다. 상어가 새로운 좌표로 이동하면, 탐색 시작점 역시 해당 새로운 좌표로 이동한 것과 같습니다. 따라서 초기 상어의 위치를 큐에 넣고 탐색할 때마다 꺼내며, 새로운 좌표로 이동할 때마다 큐에 넣는 과정을 반복하면 됩니다. 2) 문제풀이 전략 상어는 가능한 최대한 많은 물고..
📝 문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 💡 접근법 1) 문제해결 절차 문제해결 절차는 다음과 같이 크게 3단계입니다. 1️⃣ 벽을 세울 수 있는 3개 지점의 모든 조합 찾기 2️⃣ 앞서 1️⃣에서 정한 지점에 벽을 세우고 바이러스 전파 3️⃣ 가장 넓은 안전지대의 범위 출력 2) 문제해결 방법 BFS 알고리즘을 활용하여 문제를 해결하였습니다. 조합(combination)을 사용한 경우와 하지 않은 경우를 나누어 풀어봤습니다. 각각 나누어 ..
❓ 에러 메시지 커밋 중에 다음과 같은 에러를 마주했습니다. "Changes not staged for commit:" ... no changes added to commit 💡 원인 문제는 현재 터미널의 디렉토리 위치와 수정된 파일의 원격 저장소 경로가 다르기 때문에 발생한 것입니다. 저의 경우에는 최상위 폴더의 하위 폴더인 dfs-bfs 내 파이썬 파일의 코드를 수정하였습니다. 로컬 내 수정한 파일 위치와는 다르게, 터미널 내 디렉토리는 최상위 폴더의 하위 폴더인(dfs-bfs 폴더와 같은 레벨) boj입니다. 여기서 커밋을 시도했더니 다음과 같은 에러가 발생했죠. ✅ 해결방법 해결 방법은 크게 2가지입니다. 첫째, add 시 커밋할 파일의 경로까지 입력하는 경우 둘째, 최상위 디렉토리에서 커밋하는 ..
📝 문제 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 💡 접근법 DFS 알고리즘을 활용하여 문제를 해결하였습니다. \(N\)개의 숫자의 순서는 고정입니다. 따라서 DFS 알고리즘으로 모든 연산자 조합으로 연산을 수행하고 연산 결괏값의 최솟값, 최댓값을 구하면 됩니다. 💻 코드 1) 전체 코드 import sys; input = sys.stdin.readline def solve(i, r..