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;
}
'ALGORITHM > 프로그래머스' 카테고리의 다른 글
프로그래머스(레벨2) JadenCase 문자열 만들기 (0) | 2023.09.12 |
---|---|
(프로그래머스 레벨1) 약수의 합 (0) | 2023.08.24 |
(프로그래머스 레벨 1)나머지가 1이 되는 수 찾기 (0) | 2023.08.24 |
(프로그래머스 레벨 1)크기가 작은 부분 문자열 (0) | 2023.08.24 |
폰켓몬 (0) | 2023.08.17 |