콘솔창 & 윈도우창/코딩 테스트

프로그래머스 LV.2 영어 끝말잇기

뽀또치즈맛 2024. 11. 11. 19:54

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

해당 조건을 보면,

return 처리의

첫 번째 조건은 중복된 경우일 때

두 번째 조건은 마지막 단어의 끝 알파벳과 현재 단어의 시작 알파벳이 다른 것일 때

 

따라서 return 처리의 if문 안에는 두 가지 조건을 걸러낼 수 있어야 한다.

 

중복된 경우가 조건이라면

map이 적합하다.

map은 중복을 허용하지 않기 때문이다.

 

그럼 단순 반복문을 통해 해당 조건에서 return 해야할 값을 구해보자.

 

틀린 사람이 몇 번째 사람인지는

for문의 (i % n) + 1 을 통해 구할 수 있다.

틀린 사람이 몇 번째 차례인지는

for문의 (i / n) + 1 을 통해 구할 수 있다.

 

 

vector<int> solution(int n, vector<string> words) {
    map <string, int> m;

    m[words[0]]++;
    for (int i = 1; i < words.size(); i++) {
        if (m[words[i]] || (words[i].front() != words[i - 1].back()))
        {
            int human = (i % n) +1;
            int cnt = (i / n) + 1;

            return { human, cnt };
        }
        m[words[i]]++;
    }

    return {0,0};
}