본문 바로가기

HASH

(4)
Programmers / hash / 완주하지 못한 선수 https://www.welcomekakao.com/learn/courses/30/lessons/42576 1. 동명이인이 있을 수 있으므로 사람수에 대해 누적수를 저장하는 hash를 이용하자. -> unordered_map 2. participant에 대해서 값을 누적하고, completion에 대해서 값을 뺀다. 3. hash에 있는 항목 중 값이 1인 항목이 답! #include #include #include #include using namespace std; string solution(vector participant, vector completion) { unordered_map participants; // 1. 참가자 별로 숫자 세어서 누적 fo..
Programmers / hash / 전화번호 목록 https://www.welcomekakao.com/learn/courses/30/lessons/42577 1. 전화번호 목록을 오름차순으로 정렬 2. 인접한 항목들을 비교하면서 앞의 항목의 길이를 기준으로 뒤의 항목을 잘라내어 비교하여 같으면 return false 2-else. 모든 경우에 대해서 같은 항목이 없다면 return true #include #include #include #include using namespace std; bool solution(vector phone_book) { sort(phone_book.begin(), phone_book.end()); for (int i=0;i substr이 생각나지 않는다면, 직접 문자열 비교를 구현..
Programmers / hash / 위장 https://www.welcomekakao.com/learn/courses/30/lessons/42578 1. 각 의류를 입는 경우와 입지않는 경우가 있으므로 (의류 수 + 1)이 해당 의류의 경우의 수이다. 2. 의류끼리 조합해서 입으므로 각 경우의 수를 모두 곱해서 누적한다. 3. 모든 의류를 입지 않는 경우를 제외해야 하므로 1을 뺀다. #include #include #include #include using namespace std; int solution(vector clothes) { unordered_map temp; // 의상종류별로 개수 누적 for (auto name : clothes) { temp[name[1]]++; } // 만약 전체 종..
Programmers / hash / 베스트앨범 https://www.welcomekakao.com/learn/courses/30/lessons/42579 1. 장르별로 누적 재생수를 저장 -> map 2. 누적 재생수에 대해서 정렬이 필요하므로 reverseMap을 만들어 (누적재생수, 장르)로 복사해서 저장 -> 이 때, 오름차순 정렬이 되므로 역순으로 탐색해야 됨 3. 각 장르에 해당하는 곡들을 추출하여 저장 -> vector에 pair(곡번호, 재생수) 4. vector를 재생수 기준으로 내림차순 정렬 (같으면 곡번호가 낮은 것 우선) -> sort() 함수사용 5. 해당 vector에서 상위 2개 항목이 원하는 답이므로 answer에 누적 -> 이 때, 노래가 하나인 경우도 있으므로 예외 처리! #in..