https://school.programmers.co.kr/learn/courses/30/lessons/12981
영어 끝말잇기의 규칙은 3가지를 준수해야한다.
첫번째는 앞사람이 말한 마지막 문자로 첫번째 문자를 구성해야하는 것
두번째는 이미 나온 단어를 다시 말하면 안된다는 것
마지막은 길이가 1인 단어를 말하면 안되는 것이다.
첫번째 규칙은 문자를 비교하여 다를 경우 위배하였다고 판단한다.
두번째 규칙은 map을 사용하여 map에 존재하는 단어의 경우 위배하였다고 판단한다.
마지막 규칙은 length를 비교하여 1인 경우 위배하였다고 판단한다.
#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> m;
int pNum = 1, counter = 1;
int answerNum = 0, answerCounter = 0;
char lastChar = words[0][0];
for(int i = 0;i<words.size();i++){
if(lastChar != words[i][0]){ // 규칙 3 위배
answerNum = pNum;
answerCounter = counter;
break;
}
if(m.find(words[i]) != m.end()){ // 규칙 4 위배
answerNum = pNum;
answerCounter = counter;
break;
}
if(words[i].length()==1){ // 규칙 5 위배
answerNum = pNum;
answerCounter = counter;
break;
}
lastChar = words[i][words[i].length() - 1];
pNum++;
if(pNum > n){
pNum = 1;
counter++;
}
m[words[i]] = true;
}
answer.push_back(answerNum);
answer.push_back(answerCounter);
return answer;
}
'Programmers Review' 카테고리의 다른 글
[Lv 2] 괄호 회전하기 (0) | 2024.07.07 |
---|---|
[Lv 2] 귤 고르기 (0) | 2024.07.04 |
[Lv 2] 예상 대진표 (0) | 2024.07.04 |
[Lv 2] 짝지어 제거하기 (0) | 2024.07.03 |
[Lv 2] 타겟 넘버 (0) | 2024.07.03 |