반응형
📄 [해시] 위장 C++ Source Code
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
#define STRING_VECTOR vector<string>
#define STRING_PAIR pair<string, string>
int solution(vector<vector<string>> clothes) {
register int answer = 1;
unordered_map<string, STRING_VECTOR> clothesMap;
// Create Hash Table
for (const auto out : clothes) {
clothesMap[out.back()].push_back(out.front());
}
for (auto begin = clothesMap.begin(); begin != clothesMap.end(); begin++) {
const auto clothe = *begin;
answer *= (clothe.second.size() + 1);
}
/* ※ Soluction
각각 종류마다 n1,n2,n3 가지고 있다면 (n1) x (n2) x (n3) 이다.
하지만 문제에서 제시 된 각각 종류를 입지 않는 경우도 있으므로 경우의 수 +1 하게되면
(n1 + 1) x (n2 + 1) x (n3 + 1) 의 식이된다.
그리고 이후 마지막에는 모두 입지 않은 경우의수 -1 를 하게되면 답이 나오게 된다.
*/
return answer - 1;
}
📄 [해시] 위장 Swift Source Code
import Foundation
func solution(_ clothes: [[String]]) -> Int {
var answer = 1
var clotheType: [String: Array<String>] = [:]
for apperal in clothes {
let type = apperal.last!, name = apperal.first!
if clotheType.keys.contains(type) == false {
clotheType[type] = [name]
continue
}
clotheType[type]?.append(name)
}
/*
※ Soluction
각각 종류마다 n1,n2,n3 가지고 있다면 (n1) x (n2) x (n3) 이다.
하지만 문제에서 제시 된 각각 종류를 입지 않는 경우도 있으므로 경우의 수 +1 하게되면
(n1 + 1) x (n2 + 1) x (n3 + 1) 의 식이된다.
그리고 이후 마지막에는 모두 입지 않은 경우의수 -1 를 하게되면 답이 나오게 된다.
*/
for value in clotheType { answer *= (value.value.count + 1) }
return answer - 1
}
🚀 REFERENCE
반응형
'# 사용하지 않는 게시글 > 알고리즘 문제' 카테고리의 다른 글
[프로그래머스 - 스택/큐] 기능개발 (0) | 2019.04.08 |
---|---|
[프로그래머스 - 해시] 전화번호 목록 (0) | 2019.04.08 |
[프로그래머스 - 그래프] 가장 먼 노드 (0) | 2019.04.05 |
[프로그래머스 - 완전탐색] 숫자 야구 (0) | 2019.04.05 |
[프로그래머스 - 정렬] K번째수 (0) | 2019.04.05 |
댓글