Programmers 12981 영어 끝말잇기
in Algorithm
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12981
나의 풀이
map을 이용하여 이전에 등장했던 단어인지 확인하고, 이전 단어의 마지막 글자와 현재 단어의 첫번째 글자를 비교하여 끝말잇기 규칙을 잘 지켰는지 확인한다.
i번째 단어에서 탈락자가 발생했을 때 ((i-1)%n+1)번째 사람이 ((i-1)/n+1)번째 차례에 탈락했다는 것을 의미한다.
풀이 코드 : 12981 영어 끝말잇기
#include <string>
#include <vector>
#include <iostream>
#include <map>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
map<string, bool> check_map;
char last = words[0][0];
for(int i=0;i<words.size();i++){
if(last == words[i][0] && check_map.end() == check_map.find(words[i])){
check_map[words[i]] = true;
last = words[i][words[i].size()-1];
}
else{
answer.push_back(i%n+1);
answer.push_back(i/n+1);
break;
}
}
if(answer.empty()) answer = {0, 0};
return answer;
}