[알고리즘C++]영어 끝말잇기

후이재·2020년 9월 12일
1

오늘의 문제

https://programmers.co.kr/learn/courses/30/lessons/12981

영어 끝말잇기

나의 풀이

#include <string>
#include <vector>
#include <iostream>
#include <set>

using namespace std;

vector<int> solution(int n, vector<string> words) {
    vector<int> answer;
    answer.push_back(0);
    answer.push_back(0);

    set<string> wordSet;
    wordSet.insert(words[0]);
    char last = words[0][words[0].size()-1];
    for(int i=1;i<words.size();i++){
        if(words.size() == 1 || words[i][0] != last){
            answer[0] = i%n +1;
            answer[1] = i/n +1;
            return answer;
        }else{
            last = words[i][words[i].size()-1];
            if(wordSet.insert(words[i]).second == false){
                answer[0] = i%n +1;
                answer[1] = i/n +1;
                return answer;
            }
        }
    }
    return answer;
}

모범 답안

#include <string>
#include <vector>
#include <iostream>
#include <map>
using namespace std;

vector<int> solution(int n, vector<string> words) {
    int len=words.size();
    map<string,int> h;
    h[words[0]]=1;
    for(int i=1;i<len;i++)
    {
        int len1=words[i-1].size();
        if(h[words[i]] || (words[i-1][len1-1]!=words[i][0]))
            return {i%n+1,i/n+1};
        else
            h[words[i]]=1;
    }
    return {0,0};
}

배울 점

  • return {0, 0}저렇게 할 수 있는줄 처음 알았네
  • map을 사용하는 방법을 알게 되었음. map["name"] =1 으로 바로 insert가 되다니..
  • 또 문제에서 한 글자는 안된다. 했는데 입력이 2 이상이더라 ㅋㅋ. 입력 조건도 잘 보자
profile
공부를 위한 벨로그

0개의 댓글