algorithm
[프로그래머스] 영어 끝말잇기 (C++)
지제로
2022. 9. 22. 16:08
풀이 과정
1. 이전 단어의 끝과 다음 단어의 첫 글자를 비교한다.
2. 중복된 단어가 들어갔을 수 있으니 map을 이용하여 처리한다.
3. pass를 통해서 끝까지 진행되었는지 알아본다.
4. 중단된 경우 i값을 통해서 몇번째 단어인지 알아낸다.
#include <string>
#include <vector>
#include <map>
using namespace std;
bool pass = true;
vector<int> solution(int n, vector<string> words) {
int i;
vector<int> answer;
map<string, int> overlap;
overlap[words[0]]++;
for (i = 1; i < words.size(); i++) {
char prev = words[i - 1][words[i - 1].length() - 1];
char next = words[i][0];
overlap[words[i]]++;
if (prev != next || overlap[words[i]] != 1) {
pass = false;
break;
}
}
if (pass) {
answer.push_back(0);
answer.push_back(0);
}
else {
answer.push_back(i % n + 1);
answer.push_back(i / n + 1);
}
return answer;
}