https://school.programmers.co.kr/learn/courses/30/lessons/12981
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제에 나온 대로 구현하면 되는 문제다.
중복 단어인지 확인을 위해, 나오는 단어들은 save vector에 저장해둔다.
또한, 끝말잇기가 가능한지 따지기 위해 save vector의 마지막 문자와, 제시할 단어의 첫 문자를 비교한다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
int index=0; //words 접근 인덱스
int time=1;//차례 저장
vector<string>save;//나온 단어를 저장하는 벡터
while(1)
{
if(index==words.size())//다 통과함
{
answer.push_back(0);
answer.push_back(0);
break;
}
int check=0;//break나왔는지 확인하는 용도
for(int j=1;j<=n;j++)//몇번 사람인지
{
string S=words[index];
//전에 나온 단어인지 확인
auto it = find(save.begin(), save.end(), S);
if (it != save.end()) //전에 나온 단어라면
{
answer.push_back(j);//사람 번호
answer.push_back(time);//차례
check=1;
break;
}
if(!save.empty())//처음만 아니라면 끝말잇기가 가능한지 확인
{
if(save.back().back()!=S.front()) //끝말잇기 불가능하다면
{
answer.push_back(j);//사람 번호
answer.push_back(time);//차례
check=1;
break;
}
}
save.push_back(S);
index++;
}
if(check)
break;
time++;
}
return answer;
}
'문제를 풀자' 카테고리의 다른 글
[백준 #1463] 1로 만들기(Python) (1) | 2023.03.06 |
---|---|
[백준 #1149] RGB거리(Python) (0) | 2022.10.02 |
[프로그래머스] 두 큐 합 같게 만들기(C++) (0) | 2022.08.19 |
[프로그래머스] 예상 대진표(C++) (0) | 2022.08.18 |
[프로그래머스] 수식 최대화(C++) (0) | 2022.08.18 |
댓글