[C++] 백준 9375 : 패션왕 신해빈

Kim Nahyeong·2022년 9월 5일
0

백준

목록 보기
133/157

#include <iostream>
#include <map>

using namespace std;

int T, n, ans;
string name, type;

int main(){
  cin >> T;

  for(int i=0; i<T; i++){
    ans = 0; // 초기화
    map<string, int> m;
    cin >> n;

    if(n == 0){
      cout << 0 << "\n";
      continue; // 혜빈이가 가진 의상의 수는 0일수도 있다.
    }

    for(int j=0; j<n; j++){
      cin >> name >> type; // 이름 저장할 필요 X 같은 이름을 가진 의상 존재 X
      m[type]++; // 수 세기 - map insert되면 0부터 시작
    }

    for(auto iter : m){
      if(ans == 0){
        ans = iter.second + 1;
      } else {
        ans *= (iter.second + 1);
      }
    }

    cout << ans - 1 << "\n";
  }

  return 0;
}

해싱 연습용 문제.

토스 코테에서 비슷한 문제가 나왔다. 그때는 아마 이름이 중복되어서도 입력된다고 했던 것 같음. 여기서는 이름이 중복되지는 않는 문제이다.

따라서 이름은 신경쓰지 않아도 된다. 오직 종류만 보면 된다.
경우의 수는 (해당 타입 옷 수) + 1(입지 않은 경우) 를 해서 전부 곱해주고 아무것도 입지 않는 1개의 경우를 빼주면 된다. 기초적인 확통 문제 같다!

그리고 꽤 많이 틀렸습니다!를 마주하게 되었는데,
문제를 잘 읽어보면 해빈이가 가진 의상의 수 n은 0일 수 있다. 따라서

1
0

ans)
0

의 반례를 잘 확인해줘야된다. 주의하기.

0개의 댓글