Programmers 12981 영어 끝말잇기

로고 이미지

문제 링크 : 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;
}

채점결과

42586


© 2020. All rights reserved.

Powered by Hydejack v8.4.0