#1. 문제
#2. 풀이
1. unordered_map
unordered_map 컨테이너는 C++ 표준 라이브러리에서 제공하는 연관 컨테이너입니다. unordered_map 컨테이너는 키와 값을 쌍으로 해시 자료구조에 저장하며, 중복을 허용하지 않고 내부적으로 정렬 작업을 수행하지 않습니다.
2. 해시 자료구조
해시 자료구조는 해시 함수와 해시 테이블로 키와 값을 쌍으로 저장하는 비 선형 연결 자료구조입니다. 해시 자료구조는 입력받은 키를 해시 함수를 통해 '해시 함수'로 변환하고, 이에 대응하는 값을 저장하는 해시 테이블의 인덱스로 활용합니다. 해시 자료구조의 접근 성능은 선형 시간 복잡도로 빠른 접근 성능을 제공하지만, 해시 함수에 대한 강한 의존성과 해시 충돌의 단점이 있습니다.
3. 의상 종류 - 갯수를 um에 저장하고, 경우의 수를 세자!
- 먼저, 주어진 의상 정보를 통해 um 컨테이너에 { 의상 종류, 개수 }를 쌍으로 저장합니다.
- 그리고, um을 순회하며 각 의상 종류 별 개수+1을 거듭해서 곱해주며, 결과 값을 찾습니다.
- 이때, 최종 결과 값에서 각 의상 종류를 모두 입지 않은 경우를 빼주어야 합니다!
#3. 코드
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
unordered_map<string, int> um;
for(int i=0; i<(int)clothes.size(); ++i)
um[clothes[i][1]]++;
for(auto it = begin(um); it != end(um); ++it)
answer *= (it->second+1);
return answer-1;
}
'문제 풀이 > Programmers 문제 풀이' 카테고리의 다른 글
[Programmers]#Level2_캐시, unordered_map 컨테이너, LRU, transform 알고리즘 (0) | 2024.03.21 |
---|---|
[Programmers]#Level2_땅 따먹기, DP (0) | 2024.03.21 |
[Programmers]#Level2_주식가격, 스택, 히스토그램 유형 (0) | 2024.03.21 |
[Programmers]#Level2_연속 부분 수열 합의 개수, 투 포인터 알고리즘, set 컨테이너 (1) | 2024.01.06 |
[Programmers_C++]#Level2_멀리 뛰기, dp, 동적 프로그래밍 (0) | 2023.12.24 |