문제
코딩
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
int num = 1;
int turn = 0;
vector<string> vecgarbage = {};
string word = *words.begin();
vecgarbage.push_back(*words.begin());
words.erase(words.begin());
while (true)
{
turn++;
if (num == n)
num = 0;
for (; num < n;)
{
if (words.size() == 0)
{
answer.push_back(0);
answer.push_back(0);
return answer;
}
++num;
if (word.back() == words[0].front())
{
vector<string>::iterator iter = vecgarbage.begin();
for (; iter != vecgarbage.end(); ++iter)
{
if (words[0] == *iter)
{
answer.push_back(num);
answer.push_back(turn);
return answer;
}
}
word = *words.begin();
vecgarbage.push_back(*words.begin());
words.erase(words.begin());
}
else
{
answer.push_back(num);
answer.push_back(turn);
return answer;
}
}
}
}
끝말잇기 성공/실패 여부를 확인하기 위해 string class 멤버함수 string.front(), string.back() 를 이용해 문자열의 제일 앞 글자와 뒷 글자를 비교해주었다.
또한, 사용된 문자를 정리할 vector를 추가로 선언해(vecgarbage) 이번에 검사할 단어가 이전에 사용된 단어인지 확인하도록 만들었다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
int num = 1;
int turn = 0;
int PrevIdx = 0;
int Idx = 0;
while (true)
{
turn++;
if (num == n)
num = 0;
for (; num < n;)
{
++num;
Idx = PrevIdx + 1;
if (words.size() == Idx)
{
answer.push_back(0);
answer.push_back(0);
return answer;
}
if (words[PrevIdx].back() == words[Idx].front())
{
for (int i = 0; i < Idx; ++i)
{
if (words[Idx] == words[i])
{
answer.push_back(num);
answer.push_back(turn);
return answer;
}
}
}
else
{
answer.push_back(num);
answer.push_back(turn);
return answer;
}
PrevIdx++;
}
}
}
vecgarbage를 만들어 검사하는게 마음에 들지 않아서, vector를 추가 선언하지 않고 제대로 실행되도록 만들었다.
실행 결과
'프로그래밍 > 코딩 문제 풀이' 카테고리의 다른 글
프로그래머스 2023.06.11 (2Lv 프로세스) (0) | 2023.06.19 |
---|---|
프로그래머스 2023.06.09 (2Lv 기능개발) (0) | 2023.06.19 |
프로그래머스 2023.06.07 (2Lv 광물 캐기) (0) | 2023.06.19 |
프로그래머스 2023.06.05 (2Lv 점 찍기) (0) | 2023.06.19 |
프로그래머스 2023.06.02 (2Lv 여러 수의 최소공배수 구하기) (0) | 2023.06.19 |