본문 바로가기

Problem Solving/백준

(80)
[백준/Python] 2606번 바이러스 (DFS,BFS,유니온파인드) 문제 설명 문제 풀이 1번 컴퓨터와 연결된 컴퓨터의 갯수를 구하는 문제입니다. 총 3가지 방법의 풀이로 문제를 해결할 수 있습니다. BFS(너비우선탐색): 1번 컴퓨터와 연결된 가장 맨허튼 거리가 가까운 컴퓨터부터 갯수 파악 DFS(깊이우선탐색): 1번 컴퓨터와 연결된 컴퓨터의 마지막 연결점을 우선적으로 다녀오며 연결 갯수 파악 유니온파인드: 부모를 기준으로 묶어진 집합의 원소 갯수를 파악 이 문제에서는 방향이 중요하지 않으므로 undirected graph(방향이 없는 그래프)로 만들기 위해 양방향 모두 연결처리 해주었습니다. 1번 BFS풀이의 경우 array list 형식으로 100개의 모든 배열을 생성하는 방법을 사용해서 풀어냈고 2번 DFS풀이의 경우 linked list 형식으로 연결된 노드만 ..
[백준/C++] 2822번 점수 계산 #include #include #include #include #include #include #include using namespace std; bool compare(const pair &a, const pair &b) { return a.first > b.first; } int main() { vector arr; pair temp = make_pair(0,0); int answer = 0; vector num; for(int i = 1; i > temp.first; temp.second = i; arr.push_back(temp); } sort(arr.begin(), arr.end(), compare); for(int i = 0; i < 5; i++..
[백준/C++] 2164번 카드2 #include #include #include using namespace std; int main() { int N, temp = 0; cin >> N; queue arr; for(int i = 0; i < N; i++) { arr.push(i+1); } while(arr.size() != 1) { arr.pop(); temp = arr.front(); arr.pop(); arr.push(temp); } cout
[백준/C++] 11866번 요세푸스 문제 0 #include #include #include #include using namespace std; int main() { int N, M; int start = 0; cin >> N >> M; vector arr(N); vector answer; for(int i = 1; i arr.size()-1) start -= (arr.size()); answer.push_back(arr[start]); arr.erase(arr.begin() + start); } for(int it : arr) { answer.push_back(it); } cout
[백준/C++] 큐 2 / queue 구현 / 시간 단축 #include #include #include using namespace std; int main(void) { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); int N, num = 0; cin >> N; string str; queue q; for (int i = 0; i > str; if (str == "pop") { if (q.empty()) cout
[백준/C++] 1427번 소트인사이드 #include #include #include using namespace std; int main() { string answer; cin >> answer; sort(answer.begin(), answer.end(), greater()); cout
[백준/C++] 11650번 좌표 정렬하기 #include using namespace std; bool compare(pair &a, pair &b) { if(a.first == b.first) { return a.second > N; vector arr(N); for(int i = 0; i > arr[i].first >> arr[i].second; } sort(arr.begin(), arr.end(), compare); for(int i = 0; i < N; i++) { cout
[백준/C++] 10828번 스택 #include #include #include using namespace std; int main() { int N, temp; cin >> N; string action; vector arr; for(int i = 0; i > action; if(action == "push") { cin >> temp; arr.push_back(temp); } else if(action == "top") { arr.empty() ? cout