본문 바로가기

CS(Computer Science)지식71

백준 7662번: 이중 우선순위 큐 (C++) https://www.acmicpc.net/submit/7662 우선 해당 문제는 바킹독님 강의를 참고하여 이진 검색 트리 알고리즘을 활용한 STL인 multiset을 활용하였다. 이 문제는 Key, value 대응 관계가 필요한건 아니니 map보다는 set이나 multiset(중복허용)이 적합하다. (최솟값 삭제 최댓값 삭제 모두 O(logN)) #include #include using namespace std; int main() { int t; cin >> t; while (t--) { int k; cin >> k; multiset ms; while(k--) { char c; cin >> c; if (c == 'D') { int num; cin >> num; if (ms.empty()) conti.. 2024. 1. 31.
백준 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.
백준 13414번: 수강신청 [C++] https://www.acmicpc.net/problem/13414 푸는데 시간이 오래 걸렸다.. 코로나 걸려서 집중력도 떨어지고 오랜만에 푸니까 잘 안풀린다.. ㅠ unordered_map or undordered_set 같은 경우 내가 집어 넣은 순서대로 출력을 꺼낼 수 있다고 생각했는데 실제로는 넣은 순서대로 출력이 나오지 않고 해쉬 테이블 안에서 값을 꺼내므로 랜덤한 값이 출력되게 된다. 따라서 이 문제를 풀기위한 핵심은 unordered_map을 사용하여 학번과, 숫자(들어온 순서) 를 pair자료형을 통해서 받고 숫자를 기반으로 정렬하는 방법이 최선이란것을 깨달았다. 아래 두개의 풀이를 참고했다. #include #include using namespace std; bool compare(co.. 2024. 1. 31.