오늘의 알고리즘
[C++]Summer/Winter Coding(~2018) 영어 끝말잇기(프로그래머스 2레벨)
하늘하늘 .
2022. 4. 11. 20:43
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
vector<int> solution(int n, vector<string> words)
{
vector<int> answer = {0, 1};
unordered_map<string, int> unMap = {};
char cLast = words[0][0];
for (int i = 0; i < words.size(); ++i)
{
if (unMap[words[i]])
{
++answer[0];
if (answer[0] > n)
{
++answer[1];
answer[0] = 1;
}
return answer;
}
else
{
++answer[0];
if (answer[0] > n)
{
++answer[1];
answer[0] = 1;
}
if (cLast != words[i][0])
return answer;
else
cLast = words[i].back();
++unMap[words[i]];
}
}
return { 0,0 };
}
1. 여러 개 셀 필요가 없으니 unordered_map 사용
2. 겹치지 않으면 마지막 단어를 체크해야하고 마지막 단어가 다르면 return
3. 아니라면 마지막 단어 추가