본문 바로가기
개발/Coding Test

[프로그래머스 C++ Lv2] 영어 끝말잇기

by Eunduck 2022. 6. 7.
728x90

안녕하십니까. Eun🦆입니다.

풀이법 입니다.

 

 

코딩테스트 연습 - 영어 끝말잇기

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

#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(int n, vector<string> words) {
    vector<int> answer;
    int men = 0;
    int tring = 0;
    vector<string> repeat;
    
    for(int i=0;i<words.size();i++)
    {
        // 같은 말을 반복한 경우
        if(i!=1)
        {
            for(int j=0;j<repeat.size();j++)
            {
                if(repeat[j]==words[i])
                {
                    men = (i+1)%n;
                    if(men==0)
                    {
                        men = n;
                        tring = (i+1)/n;
                    }
                    else
                        tring = (i+1)/n+1;
                    printf("i=%d,men=%d,tring=%d\n",i,men,tring);
                    answer.push_back(men);
                    answer.push_back(tring);
                    return answer;
                }
            }
        }
        repeat.push_back(words[i]);
        // 끝말잇기를 잘못한 경우
        if(words[i-1].back() != words[i].front() & i != 0)
        {
            men = (i+1)%n;
            if(men==0)
            {
                men = n;
                tring = (i+1)/n;
            }
            else
                tring = (i+1)/n+1;
            printf("i=%d,men=%d,tring=%d\n",i,men,tring);
            answer.push_back(men);
            answer.push_back(tring);
            return answer;
        }
    }
    answer.push_back(men);
    answer.push_back(tring);
    return answer;
}

순서에 따라 메모리 덤프라니... 알다가도 모를...

 

네이버 블로그 리뉴얼입니다.

(https://blog.naver.com/unsuk1/221957832589)

728x90

댓글