피드

#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;
}