분류 전체보기 204

C

[BOJ 14248] 점프점프 C++

난이도: Silver 2 번호: 14248 생성일: March 6, 2023 1:14 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 깊이 우선 탐색, 너비 우선 탐색 언어: C++ 14248번: 점프 점프 C++ #include #include using namespace std; int N, S; int map[100001]; bool visit[100001]; int BFS() { queue Q; Q.push(S); visit[S] = true; int cnt = 1; while (!Q.empty()) { int cur = Q.front(); Q.pop(); int up = cur + map[cur]; if (up 0 && !visit[down]) { visit[down] = true; Q.pus..

Algorithm/BOJ 2023.03.06

C

[BOJ 24446] 알고리즘 수업 - 너비 우선 탐색 3 C++

난이도: Silver 2 번호: 24446 생성일: March 4, 2023 12:44 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색 언어: C++ 24446번: 알고리즘 수업 - 너비 우선 탐색 3 C++ #include #include #include #include using namespace std; int N, M, R; vector path[100001]; vector BFS(int R) { vector dist(N + 1, -1); queue Q; Q.push(R); dist[R] = 0; while (!Q.empty()) { int cur = Q.front(); Q.pop(); for (auto &next : path[cur]) { if (dist[next] != -1)..

카테고리 없음 2023.03.04

C

[BOJ 24447] 알고리즘 수업 - 너비 우선 탐색 4 C++

난이도: Silver 2 번호: 24447 생성일: March 4, 2023 3:00 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색 언어: C++ 24447번: 알고리즘 수업 - 너비 우선 탐색 4 C++ #include #include #include #include using namespace std; int N, M, R, sq = 1; // N: 정점의 수, M: 간선의 수, R: 시작 정점 vector path[100001]; // 인접 리스트 vector depth; // 노드의 깊이 vector seq; // 노드의 방문 순서 void BFS(int R) { queue Q; Q.push(R); // 시작 정점을 큐에 삽입 depth[R] = 0; // 시작 정점의 깊이는 ..

Algorithm/BOJ 2023.03.04

C

[BOJ 25416] 빠른 숫자 탐색 C++

난이도: Silver 2 번호: 25416 생성일: March 4, 2023 6:51 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색 언어: C++ 25416번: 빠른 숫자 탐색 C++ #include #include #include #include using namespace std; int r, c; int graph[5][5]; int dist[5][5]; const int dX[] = {0, 0, -1, 1}; const int dY[] = {1, -1, 0, 0}; int BFS(int r, int c) { queue Q; int seq = 1; Q.push({r, c}); dist[r][c] = seq++; // 시작 위치를 큐에 추가하고, 거리를 1로 설정 while (!Q..

Algorithm/BOJ 2023.03.04

C

[BOJ 1697] 숨바꼭질 C++

난이도: Silver 2 번호: 1697 생성일: March 4, 2023 7:53 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색 언어: C++ 1697번: 숨바꼭질 C++ #include #include #include using namespace std; int mini = 0xFFFFFFF; int N, K; bool visited[100001]; void BFS() { queue Q; Q.push({N, 0}); visited[N] = true; while (!Q.empty()) { int cur = Q.front().first; int cnt = Q.front().second; Q.pop(); if (cur == K) { mini = cnt; return; } if (cur ..

Algorithm/BOJ 2023.03.04

C

[BOJ 17086] 아기 상어 2 C++

난이도: Silver 2 번호: 17086 생성일: March 3, 2023 7:26 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색, 브루트포스 알고리즘 알고리즘, 자료 구조: Memoization 언어: C++ 17086번: 아기 상어 2 C++ BFS+ Memoization #include #include #include using namespace std; int N, M, maxDistToShark = -1; bool map[51][51]; bool vst[51][51]; int memo[51][51]; // 메모이제이션 배열 const int dX[] = {1, 1, 0, -1, -1, -1, 0, 1}; const int dY[] = {0, -1, -1, -1, 0, 1, ..

Algorithm/BOJ 2023.03.03

C

[BOJ 1806] 부분합 C++

난이도: Gold 2 번호: 1806 생성일: March 3, 2023 6:05 PM 알고리즘 분류: 누적 합, 두 포인터 언어: C++ 1806번: 부분합 C++ #include #include using namespace std; int main(void) { // 입력 받기 int N, S; cin >> N >> S; // 배열 입력 받기 int arr[N]; for (int i = 0; i > arr[i]; // 투 포인터 알고리즘 사용 int start = 0, end = 0, sum = 0, minLen = N + 1; // start와 end 포인터를 이용하여 배열을 한 번만 순회 while (end < N) { // end 포인터를 증가시키며 합계 구하기 sum ..

Algorithm/BOJ 2023.03.03

C

[BOJ 4195] 친구 네트워크 C++

난이도: Gold 2 번호: 4195 생성일: March 2, 2023 7:14 PM 알고리즘 분류: 분리 집합, 자료 구조, 해시를 사용한 집합과 맵 알고리즘, 자료 구조: Disjoint Set, Union-find 언어: C++ 4195번: 친구 네트워크 C++ // BOJ4195 친구 네트워크 #include #include #include #include using namespace std; // 이름과 인덱스를 매핑할 unordered_map unordered_map uMap; // 부모 노드를 저장할 vector vector parent; // 친구 수를 저장할 vector vector friend_num; // 인덱스에 해당하는 노드의 루트 노드를 반환하는 함수 int getParent(i..

Algorithm/BOJ 2023.03.02