본문 바로가기

코딩테스트30

백준 1368번: 물대기 (C++) 문제링크 https://www.acmicpc.net/problem/1368 풀이방법 해당 문제는 최소 신장 트리를 구하는 알고리즘을 사용하여 해결할 수 있다. 최소 신장 트리를 찾는 알고리즘에는 두 가지가 있다. 하나는 크루스칼 알고리즘 나머지 하나는 프림 알고리즘이다. 이 중 프림 알고리즘을 사용하여 해당 문제를 해결하였다. 다만, 이 문제를 해결하는데 가장 중요한 점은 그래프를 목적에 맞게 변형하는 것이다. 그 이유는 직접 논에 우물을 파는 경우를 그래프로 표현할 수가 없기 때문이다. 바로 방법을 알려주면 직접 논에 우물을 파는 경우를 추가적인 노드를 만들어서 추가된 노드에 가중치를 주는 방식으로 구현할 수 있다. 아래 그림을 보면 이해가 될 것이다. 5번 노드를 추가해서 해당 노드로 직접 논에 우물.. 2024. 2. 3.
백준 4803번: 트리 (C++) https://www.acmicpc.net/problem/4803 풀이방법 개인적으로 문제를 푸는데 어려움이 있었다.. 첫 번째 이유는 문제가 잘 이해가 안 갔고, 두번째로 문제를 이해하고 나서 구현 방법 자체가 헷갈렸다. 첫 번째로 해당 문제를 이해하자면 n개의 정점으로 이루어진 그래프가 여러 개 존재하게 되는데 그 그래프 중에서 트리 형태의 그래프가 몇 개인지 맞추는 문제라고 볼 수 있다 이해가 안 가면 예시 입력을 바탕으로 그림을 그려보면 쉽게 이해가 갈 것이다. 두 번째로 구현 자체가 어려웠는데 bfs를 만들어서 풀 수 있다. 여기서 가장 중요한 포인트는 아래 코드 중에서 bfs함수 안쪽을 보면 if (nxt == prev) continue;의 의미는 bfs탐색 할 때 트리 같은 경우는 루트부터 .. 2024. 2. 2.
백준 9375번: 패션왕 신해빈 [C++] https://www.acmicpc.net/problem/9375 해당 문제 같은경우는 hash_map 자체에 대한 이해도를 묻기보단 문제를 해석하는 센스와 수학적인 경우의수를 어떻게 쉽게 구할 수 있는지가 쟁점인 문제다. 입력으로 옷의 이름과 옷의 종류를 입력받는데 옷의 이름은 겹치지 않으므로 경우의 수를 구할 때 옷의 종류 만 생각하면 된다. 예를 들어서 옷의 종류가 양말, 모자, 상의 라고 가정하고 각각 다른 양말2개, 모자3개, 상의2개가 있다고 가정해보자 양말 안에서 선택할 수 있는 경우의수는 양말1 or 양말2 or 양말 선택 x 총3개 모자 안에서 선택할 수 있는 경우의수는 모자1 or 모자2 or 모자3 or 모자 선택 x 총4개 상의 안에서 선택할 수 있는 경우의수는 상의1 or 상의2o.. 2024. 1. 31.
백준 17219번: 비밀번호 찾기 [C++] https://www.acmicpc.net/problem/17219 #include #include using namespace std; int n,m; unordered_map um; int main() { cin >> n >> m; for(int i=0; i> add >> pass; um.insert(make_pair(add,pass)); } for(int i=0;i> add; if(um.find(add)!=um.end())cout N >> M; while (N--) { cin >> s >> p; umap[s] = p; } while (M--) { cin >> s; cout 2024. 1. 31.