일단 이건 틀린 풀이임.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
vector<pair<string,int>> vTemp;
for(int i=0; i<words.size()-1; i++)//맨 뒤 언어와 맨앞 언어가 다른경우임
{
if(words[i].back() != words[i+1].front())
{
answer.push_back(((i+1)%n)+1);
answer.push_back((i+3)/n);
return answer;
}
}
///멘 뒤 언어와 맨앞 언어는 같은데 중복뜨는경우임
for(int i=0; i<words.size(); i++)
{
vTemp.push_back(make_pair(words[i], i));
}
sort(vTemp.begin(), vTemp.end());
for(int i=0; i<vTemp.size()-1; i++)
{
if(vTemp[i].first == vTemp[i+1].first)
{
answer.push_back(((vTemp[i+1].second)%n)+1);
answer.push_back((vTemp[i+1].second+1)/n);
return answer;
}
}
answer.push_back(0); answer.push_back(0);
return answer;
}
이런식으로 조건 for 문을 두개로 나뉘면 안됨. 둘다 섞여있을수도 있으니까.
if 조건문이 이런식으로 되어있으며,
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(int n, vector<string> words) {
map<string, int> word;
word[words[0]]++;
for(int i=1; i<words.size(); i++){
if(word[words[i]] || words[i].front() != words[i-1].back())
return {(i%n)+1,(i/n)+1};
word[words[i]]++;
}
return {0, 0};
}
이런식으로 둘중 하나의 조건에 걸릴때 return 하게 해줘야한다.