영어 끝말잇기(Lv2)

108번뇌·2021년 3월 3일
0

일단 이건 틀린 풀이임.

#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 하게 해줘야한다.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글