반응형
https://programmers.co.kr/learn/courses/30/lessons/12981
풀이
이 문제는 끝말잇기의 룰대로 확인만 해주면 되는 간단한 문제이다.
따라서 이미 말한 단어는 check 벡터에 넣고 중복을 확인하고,
중복되지 않는 경우엔 바로 앞사람이 말한 단어의 마지막 글자가 이번 사람의 단어의 앞글자와 같은지 확인한다.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
vector<string> check;
int w = 0;
int round = 1;
char bef;
while(w < words.size()){
for(int i=1; i<=n; i++){
//첫번째 사람은 확인X
if(i==1 && w==0){
int len = words[w].length()-1;
bef = words[w][len];
check.push_back(words[w]);
w++;
continue;
}
//이미 사용한 단어인지 확인
string used = words[w];
auto it = find(check.begin(), check.end(), used);
if (it != check.end()){
answer.push_back(i);
answer.push_back(round);
return answer;
}
//앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말한지 확인
if(bef != words[w][0]){
answer.push_back(i);
answer.push_back(round);
return answer;
}
int len = words[w].length()-1;
bef = words[w][len];
check.push_back(words[w]);
w++;
//탈락자 안 생김
if(w == words.size()){
answer.push_back(0);
answer.push_back(0);
return answer;
}
}
round++;
}
return answer;
}
728x90
반응형
'알고리즘 > PS - 프로그래머스' 카테고리의 다른 글
[프로그래머스 - C++] 후보키 (0) | 2021.07.30 |
---|---|
[프로그래머스 - C++] 숫자 게임 (0) | 2021.07.27 |
[프로그래머스 - C++] [1차] 캐시 (0) | 2021.07.23 |
[프로그래머스 - C++] 거리두기 확인하기 (0) | 2021.07.23 |
[프로그래머스 - C++] 풍선 터트리기 (0) | 2021.07.23 |