#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. 아니라면 마지막 단어 추가
'오늘의 알고리즘' 카테고리의 다른 글
[C++]스택/큐 주식가격(프로그래머스 2레벨) (0) | 2022.04.13 |
---|---|
[C++]해시 베스트앨범(프로그래머스 3레벨) (0) | 2022.04.12 |
[C++]월간 코드 챌린지 시즌1 삼각 달팽이(프로그래머스 2레벨) (0) | 2022.04.09 |
[C++]월간 코드 챌린지 시즌2 2개 이하로 다른 비트(프로그래머스 3레벨) (0) | 2022.04.09 |
[C++]2018 KAKAO BLIND RECRUITMENT[1차] 프렌즈4블록(프로그래머스 2레벨) (0) | 2022.04.07 |