티스토리 뷰

영어 끝말잇기 문제 설명

풀이 과정

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;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함