-
해시 알고리즘 문제 : 프로그래머스 LEVEL 2(위장)
- 사용 언어 : C++ - 해결 날짜 : 2021-02-02**- 해결 방법** : 보자마자 map을 사용하면 되겠다는 생각이 들었다. map에 이미 존재하는 의상이라면 그 key의 value 값을 증가시켜주고, 존재하지 않는다면 kinds vector에 추가 후 그 key의 값을 1로 초기화하였다. 그 후 맵에 저장된 값들을 돌며 알고리즘에 따라 신규 값들을 추가해 주었다. 알고리즘 : 이전 값 + (새 의상의 개수(1개짜리) + 새 의상의 개수 * 이전 값) - 코드 ``` #include <string> #include <vector> #include <map> using namespace std; int solution(vector<vector<string>> clothes) { map<string, int> m; //각 의상 별 개수를 저장하기 위한 map vector<string> kinds; //의상의 종류 for (int i = 0; i < clothes.size(); i++) { if (m[clothes[i][1]] > 0) { //의상의 종류가 map에 존재하는 경우 m[clothes[i][1]]++; } else { //존재하지 않는 신규 kinds.push_back(clothes[i][1]); m[clothes[i][1]] = 1; } } int answer = 0; //알고리즘 : 이전 값 + (새 의상의 개수 + 새 의상의 개수 * 이전 값) //즉, 이전 값 + 한개짜리 + 이전 값과의 조합 for (int i = 0; i < kinds.size(); i++) { answer = answer + (m[kinds[i]] + m[kinds[i]]*answer); } return answer; } ```