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;
}