피드
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
//틀린 문자 말하는 순서 찾기
int wrong_num(vector<string> words){
string str1, str2;
int len = words.size();
int res = -1;
for(int i = 0; i<len-1; i++){
str1 = words.at(i);
str2 = words.at(i+1);
if(str1[str1.size()-1] != str2[0]){
//틀렸다면 틀린 인덱스 리턴
res = i+1;
return res;
}
}
//틀린게 없으면
return -1;
}
//중복 찾아서 중복 위치 리턴하는 함수
int overlap_num(vector<string> words){
vector<string> saved_words;
string str;
int len = words.size();
int res = -1;
for(int i = 0; i<len; i++){
str = words.at(i);
auto it = find(saved_words.begin(),saved_words.end(), str);
if(it != saved_words.end()){
//틀렸다면 틀린 인덱스 리턴
res = i;
return res;
}
saved_words.push_back(str);
}
//틀린게 없으면
return -1;
}
vector<int> index_to_ans(int index, int n){
index++;
vector<int> answer = {0,0};
if(index%n==0){
answer.at(0) = n;
answer.at(1) = (index/n); //그 사람의 몇번째 차례
}
else{
answer.at(0) = index%n; //틀린 사람 번호
answer.at(1) = (index/n)+1; //그 사람의 몇번째 차례
}
return answer;
}
vector<int> solution(int n, vector<string> words) {
vector<int> answer = {0,0};
int res1 = wrong_num(words);
int res2 = overlap_num(words);
int index;
//틀린 사람이 나오면 그 사람의 번호, 차례 찾기
//둘다 틀린 경우
if(res1 != -1&&res2 != -1){
res1>res2 ? index=res2 : index=res1;
//틀린사람이 나온 경우
answer = index_to_ans(index, n);
}
//res1만 틀린 경우
else if(res1 != -1&&res2 == -1){
index = res1;
answer = index_to_ans(index, n);
}
//res2만 틀린 경우
else if(res2 != -1&&res1 == -1){
index = res2;
answer = index_to_ans(index, n);
}
//틀린 사람이 안나온 경우
else {
answer.at(0) = 0;
answer.at(1) = 0;
return answer;
}
return answer;
}