인프런 커뮤니티 질문&답변

강민석님의 프로필 이미지
강민석

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-J

1-J 다른 풀이 방법 질문드립니다.

작성

·

169

0

제가 처음에 접근했던 방법은 옷의 개수가 3가지라면 3C0 + 3C1 + 3C2 + 3C3으로 입을 수 있는 모든 경우의 수를 구한 후, 같은 종류의 옷을 입은 경우의 수를 구해 빼는 방식이였는데void combi(int start, vector b){ if(b.size() == k){ print(b); return; } for(int i = start + 1; i < n; i++){ b.push_back(i); combi(i, b); b.pop_back(); } return; }이 함수를 사용해서 map<string,string>mp을 선언하고 옷의 이름과 종류 모두 입력 받아서 같은 종류의 옷을 입은 경우를 판별하여 구할 수는 없는지 여쭤보고 싶습니다.

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

3C0 + 3C1 + 3C2 + 3C3

...

옷의 이름과 종류 모두 입력 받아서 같은 종류의 옷을 입은 경우를 판별하여 구할 수는 없는지 여쭤보고 싶습니다.

>>

그렇게 해도 됩니다.

다만 우리가 구하고자하는 것은 그런 경우의 수라 굳이 조합을 모두 다 구해내서 >> 더해서 >> 경우의 수를 구할 필요는 없습니다.

 

그리고 그렇게 하면 더 힘들어집니다. 예를 들어.

3
hat headgear
sunglasses eyewear
turban headgear

앞과 같은 경우.

head : 2,

eye : 1입니다.

이 경우

2C1 * 1C0 +

2C0 * 1C1 +

2C1 * 1C1 +

이렇게 되서 5가 나오는데요.

조금 복잡하죠..?

되긴 됩니다 ㅎㅎ

그러나 추천드리지는 않는 방법입니다.


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


강민석님의 프로필 이미지
강민석

작성한 질문수

질문하기