[C++로 풀이] 영어 끝말잇기 ⭐⭐

Date:     Updated:

카테고리:

태그:

📌 영어 끝말잇기

난이도 ⭐⭐

🚀 문제

image

image


🚀 내 풀이 ⭕

#include <string>
#include <vector>
#include <unordered_set>

using namespace std;

vector<int> solution(int n, vector<string> words) {
    vector<int> answer (2, 0);
    unordered_set<string> record; // 이전 단어들 저장해둘 set. (나중에 중복 단어 있는지 검사해야하니까)
    
    for(int i = 0; i < words.size(); i++)
    {
        if (i % n == 0) answer[1]++; // 턴 카운트
        
        bool loseCondition1 = words[i].length() == 1;  // 탈락 조건 1. 한 글자
        bool loseCondition2 = i > 0 && words[i].front() != words[i - 1].back(); // 탈락 조건 2. 이전 문자의 마지막 글자와 현재 문자의 첫 문자 다름
        bool loseCondition3 = i > 0 && record.find(words[i]) != record.end(); // 탈락 조건 3. 이전 문자에 중복 (record 에 없어서 end()가 나와야 중복이 없다는 것)
        
        if (loseCondition1 || loseCondition2 || loseCondition3)
        {
            answer[0] = i % n + 1;
            return answer; // 탈락자 발생
        }
            
        record.insert(words[i]); // 탈락되지 않은 단어니 set에 저장. 
    }
    
    answer[1] = 0;
    return answer; // 탈락자 아무도 없음 {0, 0} 리턴
}


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Programmers 카테고리 내 다른 글 보러가기

댓글 남기기