영어 끝말잇기(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개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN