이항계수 문제들을 풀다 보니 nCk에 익숙해져서 이 문제도 그렇게 풀려고 했다.
5C2 + 3C1 + 2C1 + ... 요런식으로 하다보니까 빠르게 틀리고 나서 다시 생각해봤는데
생각보다 이지했다.
clothes 3종류, pants 2종류, headgear 3종류라고 하면
구하는 공식은
= {clothes(3) + 안입음(1)} * {pants(2) + 안입음(1)} * {headgear(3) + 안입음(1)}
- 아무것도 안입음(1)
이렇게 되겠다. 채점중 50%에서 계속 틀렸다고 나와서 20분동안 헤매다가
cout << F.GetAnswer() <<endl 줄바꿈을 안해줬었다.
당연히 테스트케이스 문제에서는 써줬어야 하는데 실수다
다음부턴 헤매지 말자!
FashionKing::FashionKing(int n) { this->Fashion.push_back("null"); this->NumberofSort.push_back(0); for (int i = 0; i < n; i++) { string Name; string Wear; cin >> Name >> Wear; for (int j = 0; j < this->Fashion.size(); j++) { if (this->Fashion[j] == Wear) { this->NumberofSort[j]++; break; } if (j == this->Fashion.size() - 1) { this->Fashion.push_back(Wear); this->NumberofSort.push_back(1); break; } } } } long long FashionKing::GetAnswer() { long long Sum = 1; for (int i = 1; i < this->NumberofSort.size(); i++) Sum *= (long long)(this->NumberofSort[i] + 1); return (Sum - 1); }
<소스 코드>
*Source of the problem = https://www.acmicpc.net/problem/9375
*문제 출처 : BAEKJOON ONLINE JUDGE
댓글
댓글 쓰기