728x90
프로그래머스 42578번 위장 HashMap - Level2
https://programmers.co.kr/learn/courses/30/lessons/42578
내 코드(틀린코드)
#include <string>
#include <vector>
#include <map>
#include <cmath>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
map<string, int> m1;
for(int i=0; i<clothes.size();i++){
m1[clothes[i][1]]+=1;
}
int mapsize=m1.size();
for(int i=0;i<m1.size();i++){
answer *= (m1[clothes[i][1]]+1);
}
return answer-1;
}
이 문제의 핵심은 각각 옷의 종류의 가짓수에 대하여 포함하냐 포함하지 않는냐의 경우를 곱하는 것의 시그마이다.
- 예제 1번
[[yellow_hat, headgear], [blue_sunglasses, eyewear], [green_turban, headgear]]
이경우 headgear의 가짓수는 2가지 eyewear의 가짓수는 1가지 이다.
headgear를 포함하거나 안포함 되는 경우 : 총 3가지
eyewear를 포함하거나 안포함 되는 경우 : 총 2가지
총 경우의수 : 5가지
이 핵심을 파악해야되는데 고딩때 경우의수를 헷갈려 삽질을 했다..
그리고 고민끝에 핵심은 파악하여 답을 제출하였으나 결과는 오답이였다.
틀린이유는 우선,
맨밑 for문에서 i를 이용하여 clothes[i][1]이부분을 돌리는것은 잘못됐다.
해쉬맵 m1의 인자 하나하나를 조회해야하는데 vector clothes를 조회하게 해두었기 때문에 틀린답이 나온다.
맞는 풀이
#include <string>
#include <vector>
#include <map>
#include <cmath>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
map<string, int> m1;
for(int i=0; i<clothes.size();i++){
m1[clothes[i][1]]+=1;
}
map<string, int>::iterator it;
for(it =m1.begin(); it!=m1.end();it++)
answer*=it->second+1;
return answer-1;
}
따라서 해쉬맵의 요소들을 접근하기 위해서는 iterator를 이용하는 것!
해쉬맵은 for문에서 i로 접근하기가 까다롭다.
the shortest code
#include <string>
#include <vector>
#include <map>
#include <cmath>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
map<string, int> m1;
for(auto ele: clothes){
m1[ele[1]]+=1;
}
for(auto it =m1.begin(); it!=m1.end();it++)
answer*=it->second+1;
return answer-1;
}
iterator를 선언해주지않고 auto를 이용하면 더 간단한 문이 나올 수 있다.
🔑 Key Point 🔑
Haspmap을 조회하기 위해서는 Iterator를 사용해야된다 !!
각각 옷의 종류의 가짓수마다 포함하냐 포함하지 않는냐의 경우의 수를 곱하는 것들을 다 더한다
728x90
반응형
'💡 CodingTest > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 43165번 DFS 타겟 넘버 : 짧은 풀이 (0) | 2020.09.14 |
---|---|
[MySQL] 프로그래머스 59408번 중복제거하기 (0) | 2020.09.03 |
[C++ ] 프로그래머스 45284번 주식가격 (0) | 2020.09.02 |
[C++ ] 프로그래머스 42577번 전화번호목록 (0) | 2020.09.02 |
[C++ ] 프로그래머스 12917번 문자열 내림순으로 배치하기 (0) | 2020.09.02 |