굥뷰를 햡시댜

[Programmers] 영어 끝말잇기 본문

알고리즘 문제 풀이/KaKao 문제 풀이

[Programmers] 영어 끝말잇기

GodZ 2019. 10. 8. 00:50

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

 

코딩테스트 연습 - 영어 끝말잇기 | 프로그래머스

3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0]

programmers.co.kr

 

문제에서 하라는 대로 구현만 하면 된다.

 

처음에 이전 단어를 저장할 문자열 변수를 하나 선언하고 이 문자열의 마지막 글자와 다음 문자열의 첫 글자를 비교한다.

 

그리고 만약 다를 경우 기존에 계산한 것들을 answer에 추가해주고 리턴한다.

 

그리고 같은 문자가 나왔을 경우도 고려해줘야 하는데 나같은 경우는 같은 단어가 나오는 것을 알기 위해 map을 사용했다.

 

#include <string>
#include <vector>
#include <iostream>
#include <map>

using namespace std;

map<string, int> m;

vector<int> solution(int n, vector<string> words) {
    vector<int> answer;
    bool flag = true;
    int cnt = 0, count = 1;
    string before = "";
    
    for(int i=0; i<words.size(); i++) {
        cnt += 1;
        if(cnt > n) {
            cnt %= n;
            count += 1;
        }
        if(before == "") before = words[i];
        else {
            if(before[before.length()-1] != words[i][0]) {
                flag = false;
                answer.push_back(cnt), answer.push_back(count);
                break;
            }
            else {
                before = words[i];
            }
        }
        
        
        m[words[i]] += 1;
        if(m[words[i]] > 1) {
            flag = false;
            answer.push_back(cnt);
            answer.push_back(count);
            break;
        }
    }
    
    if(flag) {
        answer.push_back(0), answer.push_back(0);
    }
    
    return answer;
}

 

 

 

'알고리즘 문제 풀이 > KaKao 문제 풀이' 카테고리의 다른 글

[Programmers] 전화번호 목록  (0) 2019.10.11
[Programmers] 타겟 넘버  (0) 2019.10.11
[Programmers] 네트워크  (0) 2019.10.11
[Programmers] 단어 변환  (0) 2019.10.11
[Programmers] 올바른 괄호  (0) 2019.10.08
Comments