본문 바로가기

분류 전체보기60

11723 백준 c++ 그냥 단순하게 구현했다.#include #include #include #includeusing namespace std;string instruction[6] = { "add", "remove","check","toggle","all","empty" };int arr[20] = { 0, };void solve(string ins, int n) { if (ins == "add") { arr[n - 1] = 1; } else if (ins == "remove") { arr[n - 1] = 0; } else if (ins == "check") { if (arr[n - 1] == 1) cout > n; for (int i = 0; i > temp; if (temp == "all" || temp ==.. 2024. 11. 20.
백준 1991 C++ 트리순회 문제(전위,중위,후방)순회 1991번: 트리 순회 여기서는 map을 사용했는데 편한 것 같다. key와 value값으로 이루어져 있는데 트리 문제에서 사용하면 좋을 것 같다.#include #include #include #includeusing namespace std;struct treeNode{ char left; char right;};map tree;void preorder(char st) { if (st == '.') return; cout > n; for (int i = 0; i > root >> left >> right; tree[root] = { left, right }; } preorder('A'); cout 2024. 11. 13.
백준 1068 c++ 트리 그래프문제 1068번: 트리 아아 이 문제는 어떻게 풀어야할까?.....일단 대강 읽어보면1. 그래프를 입력한다.2. 중간에 노드를 끊어낸다.3. 리프노드의 개수를 알아낸다. 이정도인 것 같다. 그렇다면.. dsf 돌리면서 자식 노드가 없다면 리프노드일 것이고.. 계속 잘라진 노드인지 확인하면 될 것이다. #include #include #include using namespace std;vector> v;int root = -1;int deleteNode = -1;int leafNode = 0;void dfs(int st) { if (st == deleteNode) return; bool isleaf = true; for (int i : v[st]) { if (i != deleteNode) { isleaf.. 2024. 11. 12.
백준 9019 C++ bfs 9019번: DSLR 문제 코드만 궁굼하시면 아래로 스크롤 해주세요~!이 문제는 처음보는 문제 유형이였습니다.왜냐하면 대부분의 그래프 문제는 vertex, edge의 개수가 정확히 주어지는 문제였는데이번에는 implicit graph로 무한그래프? 끝을 알 수 없는 그래프 문제입니다. 저는 그래프 문제를 풀 때 기본적인 것으로 돌아가는게 중요하다 생각합니다.그러므로 bfs에 대한 기본적인 코드를 머리에 넣고 갑시다. 기본적으로 큐로 도착하고 가까운 노드를 먼저 탐색을 하니 아래와 같은 코드가 나옵니다....// 그래프를 인접 리스트로 표현vector> graph;vector visited;void bfs(int start) { queue q; // 탐색을 위한 큐 q.push(s.. 2024. 11. 11.
백준 1707 C++ dfs한 번 돌려서 색을 칠하고 그래프 돌면서 옆이랑 같은 색인지 확인하면 끝이다.#include #include using namespace std;int v, e;vector> Graph;vector isvisited;void input() { cin >> v >> e; Graph.assign(v + 1, vector(0, 0)); isvisited.assign(v + 1, 0); for (int i = 0; i > cv >> ce; Graph[cv].push_back(ce); Graph[ce].push_back(cv); } }void dfs(int cur) { if (!isvisited[cur]) isvisited[cur] = 1; for (int i = 0; i > k; for (int .. 2024. 11. 5.
1987 C++ 백준 그래프 문제 문제를 천천히 읽어보자....대충 보면 R x C grid가 있고 이미 방문한 알파벳은 방문이 불가능하다.최대로 멀리 갈 수 있는 경로를 찾아라? 이렇게 해석이 된다... 그렇다면 dfs를 도입해서 생각해보자. 일단 머리에 하나의 코드를 넣고, 나의 정답 코드와 비교를 해보자.void dfs(int x){ visited[x] = true; cout void solve(int x, int y, int m) { visited[arr[y][x] - 'A'] = 1; if (ans = 0 && cy >= 0 && cx 생긴거만 보면 거의 동일하며, 문제에 맞게 조금만 변형이 되어 있다. #include #include using namespace std;char arr[21][21];int visited[26].. 2024. 11. 4.