728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42578
문제 분석
입을 수 있는 옷의 종류 얼굴, 상의, 하의, 겉옷 4가지가 있다.
같은 종류의 옷은 같이 입을 수 없지만 다른 종류의 옷, 예시를 들자면 얼굴 얼굴 조합은 안되지만, 얼굴 상의 조합은 되는 것이다.
이렇게 옷의 조합이 몇개가 나오는지 계산하는 문제이다.
알고리즘 설계
우선 unordered_map, key는 string, value는 int로 가지는 um을 선언한다.
또 int를 가지는 vector을 하나 선언하고, 정답으로 반환할 int형 변수 answer을 선언하고 1로 초기화한다.
우선 clothes를 범위기반 for을 돌리고 그값의 1번 인덱스의 있는 옷의 종류를 가지고 um에서 1 더해준다.
이후 um을 범위기반 for을 돌려 p을 얻고, p의 두번째 값에 1을 더한 값을 answer에 더한다. 이후 for문이 끝나고 answer에 1을 뺀 값을 반환하면 된다.
유의점
경우의수를 잘 생각하여 작성하여야한다.
코드
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
int solution(vector<vector<string>> clothes)
{
unordered_map<string, int> um;
vector<int> vec;
int answer = 1;
for (vector<string> vec : clothes)
um[vec[1]]++;
for (auto p : um)
answer *= p.second + 1;
return answer - 1;
}
728x90
'ALGORITHM > C++ - 프로그래머스' 카테고리의 다른 글
[프로그래머스] 입국심사 (1) | 2023.11.22 |
---|---|
[프로그래머스] 신고 결과 받기 (0) | 2023.11.01 |
[프로그래머스] 베스트앨범 (0) | 2023.11.01 |
댓글