문제 포인트
map 자료구조
최대 결과값 크기 고려한 타입(long long)
=> 2^30까지 고려해야 함
=> 2^31 = 2,147,483,648
경우의 수
해설 코드와 내 코드 비교
최대 결과값 크기 고려한 타입(long long)
테스트 케이스 for 보다 while로 간단 표현
테스트 케이스별 자료구조 초기화를 위해 해설 코드는 변수 재정의를 하고, 내 코드는 map.clear() 함수를 이용해 모든 원소를 지운다.
해설 코드
#include <bits/stdc++.h>
using namespace std;
int t, n;
string a, b;
int main(){
cin >> t;
while(t--){
map<string, int> _map;
cin >> n;
for(int i = 0; i < n; i++){
cin >> a >> b;
_map[b]++;
}
long long ret = 1;
for(auto c : _map){
ret *= ((long long)c.second + 1);
}
ret--;
cout << ret << "\n";
}
return 0;
}
내 코드
#include <iostream>
#include <map>
using namespace std;
map<string, int> m;
int main(){
int t, n;
int ret = 1;
string a, b;
cin >> t;
for(int i = 0; i < t; i++){
ret = 1;
m.clear();
cin >> n;
for(int j = 0; j < n; j++){
cin >> a >> b;
m[b]++;
}
for(auto row : m){
ret *= (row.second+1);
}
cout << ret - 1 << endl;
}
}
'알고리즘 문제풀이' 카테고리의 다른 글
2559 수열 (0) | 2023.07.05 |
---|---|
9996 한국이 그리울 땐 서버에 접속하지 (0) | 2023.07.04 |
1159 농구 경기 (0) | 2023.07.04 |
2979 트럭 주차 (0) | 2023.07.04 |