문제
https://school.programmers.co.kr/learn/courses/30/lessons/12981#
끝말잇기에서 틀린 사람을 찾는 문제였다.
문제 풀이
set을 이용해서 해당 단어가 이전에 나왔는지 확인했고, 이전 단어의 끝 글자를 저장해서 현재 단어의 첫 글자와 같은지 확인했다.
#include <string>
#include <vector>
#include <iostream>
#include <set>
using namespace std;
set<string> wordSet;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
int num, count; //번호, 차례
char beforeWordEnd;
num=2;
count = 1;
wordSet.insert(words[0]);
beforeWordEnd = words[0][words[0].size() -1];
for(int i=1;i<words.size();i++){
if(beforeWordEnd != words[i][0] || wordSet.count(words[i]) == 1){ //끝남
//cout<<"beforeWord: "<<beforeWordEnd<<" nowWord: "<<words[i]<<endl;
answer.push_back(num);
answer.push_back(count);
break;
}
wordSet.insert(words[i]);
num++;
if(num/(n+1) >0){
count++;
num = 1;
}
beforeWordEnd = words[i][words[i].size() -1];
}
if(answer.empty()){
answer.push_back(0);
answer.push_back(0);
}
return answer;
}