ALGORITHM/프로그래머스
추억점수
JC0
2023. 8. 16. 23:18
map 사용법과 iterator사용이 오랫만이라 굉장히 헤맷던 문제였다.
중간에 문제는 해결했는데 모든 테스트 케이스를 통과하지 못했다.
이유는 2차원 벡터 vector<vector<string>photo 입력값이 행의 개수와 열의 개수가 같을 것이라고 가정하고 풀었는데 그렇지 않은 경우가 있기 때문이었다.
1행 3열과 2행 3열짜리 벡터 두개가 입력값으로 온다면 실패하게 되었다.
초반에 틀렸던 코드
vector<int> solution(vector<string> name, vector<int> yearning, vector<vector<string>> photo)
{
vector<int> answer;
map<string, int> map1;
int col = photo[0].size();
int row = photo.size();
for (int i = 0; i < name.size(); i++)
{
map1.insert(pair<string, int>(name[i], yearning[i]));
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
for (auto item : map1)
{
if (item.first == photo[i][j])
{
sum += item.second;
}
}
}
answer.push_back(sum);
sum = 0;
}
return answer;
}
고친 코드
#include <string>
#include <vector>
#include <iostream>
#include <map>
using namespace std;
int sum;
vector<int> solution(vector<string> name, vector<int> yearning, vector<vector<string>> photo)
{
vector<int> answer;
map<string, int> map1;
for (int i = 0; i < name.size(); i++)
{
map1.insert(pair<string, int>(name[i], yearning[i]));
}
for (int i = 0; i < photo.size(); i++)
{
for (int j = 0; j < photo[i].size(); j++)
{
for (auto item : map1)
{
if (item.first == photo[i][j])
{
sum += item.second;
}
}
}
answer.push_back(sum);
sum = 0;
}
return answer;
}