• (백준 알고리즘 문제풀이) 1260번 DFS와 BFS

    문제 문제 링크 어떻게 접근할 것인가? 말그대로 DFS와 BFS를 구현하는 문제이다. 원소를 접근할 때 visited 값을 나중에 complete하고 바꿔주는 게 아니라 바로 바꿔줘야한다. 코드 #include <string> #include <iostream> #include <vector> #include <cstdlib> #include <queue> using namespace std; int N, M, src, v1, v2; void dfs(int s, int** arr, bool* visited,...


  • (백준 알고리즘 문제풀이) 4386번 별자리만들기

    문제 문제 링크 어떻게 접근할 것인가? 이것은 Minimum Spanning Tree의 문제이다. Minimum Spanning Tree를 위한 크루스칼 알고리즘을 공부해놨던 것을 참고 했다. 먼저 각 좌표를 다 받고 edge를 생성해놨다. edge를 sorting하고 하나씩 추가해가면서 cycle 여부를 확인한다. MST 정리 자료(크루스칼) Cycle 여부 확인 방법(Union-Find) 코드 #include <string> #include <algorithm> #include <vector> #include...


  • (백준 알고리즘 문제풀이) 2805번 나무자르기

    문제 문제 링크 어떻게 접근할 것인가? 이분탐색으로 접근하라고 되어있지만 이분탐색보다 직접 수학적으로 접근하는 것이 더 나을 것 같았다. 앞서 풀었던 프로그래머스의 예산배정과 같은 식으로 접근했다. 프로그래머스 예산 풀이 코드 #include <string> #include <algorithm> #include <vector> #include <cstdio> using namespace std; int main(){ long long N, M, tree; vector<int> v; scanf("%lld...


  • (백준 알고리즘 문제풀이) 11656번 접미사배열

    문제 문제 링크 어떻게 접근할 것인가? substring을 vector에 넣어주고 sorting한다. 코드 #include <iostream> #include <string> #include <algorithm> #include <vector> using namespace std; int main(){ vector<string> v; string s; cin >> s; int count = s.length(); for(int i = 0; i < count; i++){ v.push_back(s); s = s.substr(1, count -1 -i);...


  • (백준 알고리즘 문제풀이) 11655번 ROT13

    문제 문제 링크 어떻게 접근할 것인가? 문자를 보고 m이나 M 전후를 확인하고 알맞게 변경해서 출력해준다. 코드 #include <iostream> #include <string> using namespace std; int main(){ string line = ""; getline(cin,line); for(int i = 0; i < line.length(); i++){ if(line[i] == ' ' || ('0' <= line[i] && line[i] <= '9'))...