본문 바로가기

분류 전체보기14

[BOJ - 14502] 연구소 (C++) 문제  접근방법 1. 벽 세우기 2. 바이러스 확산 3. 안전 영역 계산  벽을 세우는 것은 DFS -> buildWall 함수를 만들어 사용 -> 최종적으로 count가 3인 경우 바이러스를 확산하는 함수를 사용한 뒤 안전 영역을 계산   코드#include #include using namespace std;const int MAX = 8;int N, M;int lab[MAX][MAX];int temp[MAX][MAX];int dx[] = {-1, 1, 0, 0};int dy[] = {0, 0, -1, 1};int ans = 0;bool checkArea(int x, int y) { return x >= 0 && x = 0 && y > q; for (int i = 0; i > N >> M;.. 2025. 2. 13.
[BOJ - 12865] 평범한 배낭 (C++) 문제  접근방법 현재 무게가 w인 경우 최대 가치를 배열의 인덱스(w)로 갱신하면서 접근 -> DP   코드#include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int N, K; // N: 물건 수, K: 최대 무게 cin >> N >> K; vector weight(N + 1); vector value(N + 1); for (int i = 1; i > weight[i] >> value[i]; } // dp[w] -> 무게 w일 때 최대 가치 vector dp(K + 1, 0); .. 2025. 2. 13.
[BOJ - 1926] 그림 (C++) 문제   접근방법[BOJ - 6186] Best Grass(C++)내가 풀었던 문제와 유사하다, 그러나 그림의 최대 크기를 계산해야 하는 부분이 추가explore(dfs 실행) 함수 내에서 int area 변수를 통해 조건을 만족할 때마다 area 변수를 갱신-> 반복문을 main 함수 안에서 직접 돌려 largestArea를 갱신   코드#include using namespace std;const int MAX = 501;int n, m;int canvas[MAX][MAX];bool visited[MAX][MAX];int dx[] = {-1, 1, 0, 0};int dy[] = {0, 0, -1, 1};bool inArea(int x, int y) { return x >= 0 && x = 0 &.. 2025. 2. 13.
[BOJ - 4485] 녹색 옷 입은 애가 젤다지? (C++) 문제  접근방법잃는 금액을 최소화 -> 최단 경로 문제상하좌우로 이동 (dx[], dy[]로 선언), 가중치 존재-> 다익스트라 알고리즘을 사용한 문제 해결 dist[][] 배열 -> 각 칸까지의 현재까지 최소 비용을 저장, 초기값은 (0,0)에서 시작, 이외에는 INT_MAX값으로 초기화.   코드#include #include using namespace std;const int INF = 2147483647;const int Max_size = 126;int N;int thief_rupee[Max_size][Max_size];int dist[Max_size][Max_size];int dx[] = {-1, 0, 1, 0};int dy[] = {0, -1, 0, 1};bool inArea(int x, .. 2025. 2. 13.
[BOJ - 6186] Best Grass(C++) 문제  접근방법문제를 해석하지 않아서 잘 모르겠는데4963번: 섬의 개수이 문제와 비슷하다고 판단 (#이 있는 지역의 개수)dx, dy로 상하좌우로 이동할 수 있게 선언한 후 DFS로 연결된 #을 모두 탐색하면 되겠다고 생각   코드#include using namespace std;int R, C;const int Max_size = 101;char map[Max_size][Max_size];bool visited[Max_size][Max_size];int dx[] = {-1, 0, 1, 0};int dy[] = {0, -1, 0, 1};bool inArea(int x, int y) { return x >= 0 && y >= 0 && x > R >> C; for (int i = 0; i > .. 2025. 2. 12.
[BOJ - 17219] 비밀번호 찾기(C++) 문제   접근방법 사이트 비밀번호를 빠르게 찾기 위해,(URL 및 PASSWORD를 저장) unordered map으로 저장    코드#include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M; unordered_map sites; while (N--) { string site_url, site_password; cin >> site_url >> site_password; sites[site_url] = site_password; // ✅ .. 2025. 2. 10.