끝말잇기를 해서 탈락한 사람의 번호와 그사람이 몇번째 순서에 탈락했는지를 리턴해 주면 되는 문제이다. 주의할 점은 탈락하는 사람이 없을 수 도 있다는 점이다.
#include <string>
#include <vector>
#include <unordered_map>
#include <iostream>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer(2,0);
unordered_map<string, bool> um;
string prev = "";
int order_idx = 0;
bool failed = false;
for(auto word : words) {
if (um[word] || (prev != "" && prev.back() != word[0])) {
//중복단어 사용했거나, 끝말이 안이어졌으면
failed = true;
break ;
}
prev = word;
um[word] = true;
order_idx++;
}
if (failed) {
answer[0] = (order_idx % n) + 1;
answer[1] = order_idx / n + 1;
}
return answer;
}