[프로그래머스] [PCCP 기출문제] 2번 / 석유 시추(c++)
·
PS/프로그래머스
🔍 문제https://school.programmers.co.kr/learn/courses/30/lessons/250136(레벨2)📝 풀이해당 석유가 속해있는 그룹의 크기를 구하면 된다.먼저 bfs로 석유 그룹을 찾고, 각 그룹마다 석유 개수를 저장한다.그리고 각 라인마다 해당되는 석유 그룹을 찾아서 최댓값을 구하면 된다.💻 코드// bfs로 그룹 짓기// 각 그룹별 크기 저장// x 위치 끝까지 돌면서 해당되는 그룹 크기 추가#include #include #include #include using namespace std;using pii = pair;int n, m;int dx[4] = {1, 0, -1, 0};int dy[4] = {0, 1, 0, -1};int vis[501][501]; /..
[백준] 2001번 보석 줍기(c++)
·
PS/백준
문제https://www.acmicpc.net/problem/2001풀이n개의 섬과 m개의 다리가 있을 때, 시작섬(1번)에서 출발해서 섬의 보석을 먹고 다시 시작섬으로 돌아오는 문제이다.단, 각 다리마다 들고 갈 수 있는 최대 보석 개수 제한이 존재한다. 처음에는 dp 문제인가 해서 고민했는데 계속 봐도 풀이가 생각이 안 나서 다른 사람들의 블로그를 보고 이해했다. 문제에서 다리의 무게 제한이라는 조건을 빼면 시작점에서 각 노드를 방문하고 돌아오는 그래프 문제로 볼 수 있다. 이때 bfs에서 visited 배열에 어떤 섬들에서 보석을 주운 상태일 때 라는 조건을 추가해준다.visited[x][state] 는 특정 섬들에서 보석을 주운 상태로, x번째 섬에 방문했다는 의미이다.여기서 보석을 주운 섬들의 ..