no image
C++ [Algorithm] - 백준 24479 알고리즘 수업 - 깊이 우선 탐색 1
문제입출력문제 요약정점이 5개, 간선이 5개, 1번부터 출발한다.정점과 연결된 관계는 (1,4), (1,2), (2,3), (2,4), (3,4)로 연결되어 있다. 이런 그림으로 양방향 연결되어 있다.방문할 때는 인접 정점을 오름차순으로 정렬 후 방문한다고 했으니 정렬을 하자면이런 식으로 정렬이 되어 있을 것이다. 1번부터 방문을 한다면1번 -> 2번 -> 3번 -> 4번, 5번은  X 순으로 방문하게 될 것이다.코드#include #include #include using namespace std;vector V[100001];int visited[100001];int ans[100001];int depth = 1;void dfs(int x) { visited[x] = 1; ans[x] = depth+..
2024.08.02
no image
C++ [Algorithm] - 백준 10026 적록색약
문제입출력문제 요약적록색약은 빨강(R), 초록(G)를 차이를 구분하지 못한다고 한다. 즉 적록색약이 봤을 때는 R과 G를 동일선상에 놓아야한다.출력 값들을 보면 적록색약이 아닌 사람이 봤을 때의 구역 개수, 적록색약인 사람이 봤을 때 구역의 수를 출력해야한다.코드 구현 순서는 1. 적록색약이 아닌 사람이 봤을 때의 dfs 실행2. 적록색약의 dfs를 하기 전 G -> R 로 바꾸기3. visited 배열 false로 다시 초기화4. 적록색약의 dfs 실행코드#include #include using namespace std;int dx[4] = { -1,0,1,0 };int dy[4] = { 0,1,0,-1 };char map[100][100];bool visited[100][100];int N;int ..
2024.08.02
no image
C++ [Algorithm] - 백준 4963 섬의 개수
문제입출력문제 요약이 문제는 백준 1012 유기농 배추 문제에서 대각선 방향으로 이동하는 조건만 추가한 문제이다.https://dongyeop00.tistory.com/108 C++ [Algorithm] - 백준 1012 유기농 배추문제 간단하게 설명하자면 상하좌우 네 방향에 다른 배추가 위치한 경우 서로 인접하다. 즉 1덩어리로 본다.위 그림을 보면 총 5덩어리다. 코드#include #include using namespace std;int testCase, M, N, K;int xdongyeop00.tistory.com코드는 위 문제와 동일하나 dx, dy 배열에서 대각선으로 이동하는 값만 추가되었다.코드#include #include using namespace std;int dx[8] = { -..
2024.08.02
no image
C++ [Algorithm] - 백준 2667 단지번호붙이기
문제입출력문제 요약이 문제는 dfs가 몇번 돌아가는지, dfs 1번 돌아갈 때 몇번 탐색하는지를 구현하는 문제이다.dfs 개념과 dfs의 재귀함수 과정을 안다면 쉽게 풀 수 있다. 코드#include #include #include #include using namespace std;int map[25][25];bool visited[25][25];int dx[4] = { -1,0,1,0 };int dy[4] = { 0,1,0,-1 };int N, house = 1;vector seq;void dfs(int x, int y) { visited[x][y] = true; for (int i = 0; i = 0 && ny >= 0) { if (map[nx][ny] == 1 && !visited[nx][ny..
2024.08.02
no image
C++ [Algorithm] - 백준 1520 내리막길
문제입출력문제 요약(0,0)으로 시작해서 (m,n)까지 갈 수 있는 경로를 구하는 문제이다.단 이동할 수 있는 조건은 다음 좌표의 위치값이 현재 좌표의 위치값보다 작아야한다.이 조건은 dfs 함수에서 (map[x][y] > map[nx][ny])로 구현하면 될 것 같다. 모든 경로의 수를 구해야 하니 살짝 dp 메모제이션 기법을 사용하면 좋을 것 같다. [dp 배열]322211  111  1 1111목적지 문제에서 주어진 모든 경로들이 지나가는 곳에 1씩 더하면서 dfs를 시작하면최종적으로 이런 dp 배열 형태가 만들어질 것이다.코드#include #include using namespace std;int map[501][501];int visited[501][501];int dx[4] = { -1, 0..
2024.08.02
no image
C++ [Algorithm] - 백준 10815 문자열 집합
문제입출력문제 요약 map을 이용하면 아주 간단하다.map.insert(pair)(값,true) 이런 식으로 받은 후 11개를 비교 시 입력 받은 str값이map[str] == true면 cnt 값을 올려주면 된다.코드#include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int N, M; int cnt = 0; string temp; cin >> N >> M; map map1; for (int i = 0; i > temp; map1.insert({ temp, true }); } for (int i = 0; i > temp; if (map1[temp] ==..
2024.08.01
no image
C++ [Algorithm] - 백준 10815 숫자 카드
문제입출력문제 요약63210-10 이렇게 입력 값이 주어진다면 109-52345-10위 배열이 입력 값에 포함된다면 1출력 아니면 0을 출력하면 된다. 단순하게 2중 반복문으로 탐색을 할 순 있지만 카드의 수가 500,000개로 (n)^2이면 시간제한에 넘기 때문에 이진 탐색으로 풀어야한다는 걸 알 수 있다. 1. 이진 탐색은 정렬이 필수적으로 필요하기 때문에 입력 배열을 정렬한다.-1023610이 배열을 갖고 입력값마다 존재한지 아닌지를 판단해주면 된다.코드#include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int N, M, temp; vector v1; ..
2024.08.01
no image
C++ [Algorithm] - 백준 13458 시험 감독
문제 시험장마다 사람의 수를 갖고 먼저 총 감독관의 값을 뺀 후 count++그 후 부감독/C를 한 후 반올림을 진행한다.why? 부감독이 감시할 수 있는 사람이 5명이여도 남은 학생 수가 4명이면 1명은 더 필요하기 때문에코드#include #include #include using namespace std;int main() { int A, B, C; long long answer = 0; cin >> A; vector room(A); for (int i = 0; i > room[i]; } cin >> B >> C; for (int i = 0; i 0) { answer += ceil((double)num / C); } } cout  간단한 구현 문제였지만 결과값에 대한 자료형 선언이 함..
2024.07.29