#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. 아니라면 마지막 단어 추가

+ Recent posts