728x90
반응형

map 9

코딩테스트 최빈값 구하기

문제 설명해당 문제는 정수 배열에서 가장 많이 등장한 값인 최빈값을 찾아 반환하는 문제이다.단, 최빈값이 여러 개라면 -1을 반환해야 한다. 핵심 방법map을 사용해 각 숫자의 등장 횟수를 세고,최대 등장 횟수를 기준으로 가장 많이 등장한 값이 여러 개인지 여부를 판단한다.여러 개면 -1하나면 해당 값을 반환map에 대한 자세한 내용은 아래 블로그에서 확인할 수 있다. std::map, std::unordered_mapstd::mapmap은 정렬된 컨테이너로 key 값을 기준으로 자동 정렬된다.(정렬은 오름차순)또한 중복키를 허용하지 않기 때문에 동일한 key 값은 존재할 수 없다.이진 탐색 트리를 기반으로 구현이 되었jinho082008.tistory.com #include #include #incl..

코딩테스트 : 가장 먼 노드

문제 설명해당 문제는 1번 노드에서 시작했을 때 최단 경로로 가장 멀리 떨어진 노드들의 개수를 구하는 문제다.BFS(너비 우선 탐색)을 사용하여 1번 노드부터 시작해 각 노드까지의 거리를 구한다.그 중 가장 멀리 떨어진 거리를 가지는 노드들의 개수를 세면 된다. 핵심 방법인접 리스트를 구성해 그래프 표현(index 1의 요소들은 1과 연결된 모든 노드)BFS를 통해 각 노드까지의 최단 거리 계산최댓값 거리를 구하고, 그 거리를 가진 노드 개수 반환#include #include #include #include #include #include using namespace std;// BFS를 통해 1번 노드에서 가장 멀리 있는 노드들의 개수를 구하는 함수int bfs(vector>& v){ queue..

코딩테스트 : 숫자 문자열과 영단어

문제 설명해당 문제는 숫자로 이루어진 문자열에 숫자를 의미하는 영단어가 섞여 있는 경우, 이를 원래 숫자 형태로 변환하는 문제이다.문자열에는 zero부터 nine까지의 영단어가 포함될 수 있으며, 이 단어들을 실제 숫자로 바꿔 하나의 정수로 반환해야 한다.예를 들어 "one4seveneight"은 "1" + "4" + "7" + "8"로 해석되어 1478이 된다. 핵심 방법자 0부터 9까지에 해당하는 영단어를 미리 매핑해놓는다.입력 문자열에서 해당 영단어가 존재할 경우 find 함수로 위치를 찾고, 해당 부분을 대응하는 숫자로 replace 한다.모든 영단어를 숫자로 치환한 후, stoi() 함수를 이용해 문자열을 정수로 변환해 반환한다. map에 대한 자세한 설명은 아래 링크에 정리해두었다. std::..

코딩테스트 : 추억 점수

문제 설명해당 문제는 각 사진에 등장하는 인물들의 이름이 주어지고, 인물마다 '그리움 점수'가 부여되어 있을 때,사진별로 등장 인물의 그리움 점수를 모두 더한 '추억 점수'를 계산하는 문제이다. 핵심 방법이름과 그리움 점수를 빠르게 조회하기 위해 unordered_map을 사용한다.각 사진을 순회하며 사진 속 인물이 점수표에 있는 인물이라면 그 점수를 더한다.사진별 계산된 점수를 결과 벡터에 차례대로 넣는다. map에 대한 자세한 설명은 아래 링크에 정리해두었다. std::map, std::unordered_mapstd::mapmap은 정렬된 컨테이너로 key 값을 기준으로 자동 정렬된다.(정렬은 오름차순)또한 중복키를 허용하지 않기 때문에 동일한 key 값은 존재할 수 없다.이진 탐색 트리를 기반으로 ..

코딩테스트 : 2016년

문제 설명해당 문제는 2016년 1월 1일이 금요일일 때, 2016년 a월 b일의 요일이 무엇인지 반환하는 문제이다.요일은 "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"으로 반환해야 하며, 윤년(2월 = 29일) 조건이 적용된다. 핵심 방법2016년 1월 1일은 금요일(FRI)이며, 이 날을 기준으로 며칠이 지났는지를 계산해 요일을 결정한다.각 월의 날짜 수를 배열이나 맵에 저장한 뒤, 1월 1일부터 a월 b일까지 며칠이 지났는지 누적 합을 계산한다.누적일수를 7로 나눈 나머지를 이용해 요일을 찾는다. (0 → THU, 1 → FRI, ..., 6 → WED 순서) map에 대한 자세한 설명은 아래 링크에 정리해놓았다. std::map, std::unordered_..

코딩테스트 : 신고 결과 받기

해당 문제는 유저들이 서로를 신고하고, 일정 횟수 이상 신고된 유저는 정지되며, 이 정지 사실을 신고한 사람들에게 메일로 알려주는 시스템을 구현하는 문제다. 문제 핵심유저는 다른 유저를 여러 번 신고할 수 있지만, 동일한 유저에 대해 여러 번 신고해도 1번으로 처리된다.k번 이상 신고당한 유저는 정지되고, 이를 신고한 유저들은 메일을 받게 된다.최종적으로는 각 유저가 받은 메일의 수를 배열로 반환해야 한다. 해결 방법동일한 사람이 같은 사람을 여러 번 신고한 건 한 번으로 간주되어야 하므로, 중복을 체크해주는 자료구조가 필요하다.map을 이용해 유저 이름을 인덱스로 빠르게 매핑하여 벡터에서 다루기 쉽게 한다.정지된 유저가 있으면, 해당 유저를 신고한 사람들에게 메일을 보낸다. map에 대해 궁금한점이 ..

코딩테스트 : 의상

해당 문제는 입을 수 있는 옷의 조합을 구하는 문제로 같은 종류의 의상은 동시에 착용할 수 없다는 특징이 있다. 이 문제는 clothes 벡터가 의상과 의상의 종류를 가지고 있는 벡터를 가지고 있으며 해당 벡터의 0번째 인덱스는 의상 1번째 인덱스는 의상의 종류라는 점을 이용하면 된다. map 자료구조에 대한 자세한 설명은 아래 링크에 정리하였다. std::map, std::unordered_mapstd::mapmap은 정렬된 컨테이너로 key 값을 기준으로 자동 정렬된다.(정렬은 오름차순)또한 중복키를 허용하지 않기 때문에 동일한 key 값은 존재할 수 없다.이진 탐색 트리를 기반으로 구현이 되었jinho082008.tistory.com #include #include #include using nam..

std::map, std::unordered_map

std::mapmap은 정렬된 컨테이너로 key 값을 기준으로 자동 정렬된다.(정렬은 오름차순)또한 중복키를 허용하지 않기 때문에 동일한 key 값은 존재할 수 없다.이진 탐색 트리를 기반으로 구현이 되었기에 탐색, 삽입, 삭제의 시간 복잡도는 O(log n)이다.예제#include #include int main() { std::map ageMap; ageMap["Alice"] = 25; ageMap["Bob"] = 30; for (const auto& [name, age] : ageMap) { std::cout 해당 예제를 보면 ageMap이라는 map에 키가 "Alice" 값이 25, 키가 "Bob" 값이 30인 값들을 넣었다.map은 map[키] 형식으로 접근할 ..

코딩테스트 : [3차]압축

해당 문제는 현재 입력(w)을 최대한 길게 확장하면서 사전에서 찾고 없으면 추가하는 문제로 이후 같은 단어가 나올 시 검색을 단축 시킬 수 있다.구현 방법#include #include #include using namespace std;vector solution(string msg) { vector answer; //사전을 map으로 저장해 string 값을 통해 해당 값의 사전 번호를 추출할 수 있게 했다. map dictionary; //사전은 1번부터 시작하니 index를 1로 초기화한다. int index = 1; //Z와 A의 차이만큼 반복하며 index가 1부터 시작하니 1을 더해준다. for(; index

728x90
반응형