풀이 과정
조건에 맞지 않는 인덱스를 찾는 것이 우선이다.
1. 이전에 등장했던 단어는 사용할 수 없습니다.
map에 영어 단어를 넣고 다음 영어 단어를 넣었을 때, 카운트가 하나라도 됐다면
이전에 나왔던 것이라는 뜻이므로 틀린 인덱스를 찾을 수 있다.
2. 앞 사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.
이 방식으로 인덱스를 찾았으면 [번호, 차례] 형태로 return하면 된다.
만약 idx가 0이라면 탈락자가 생기지 않았다는 뜻이므로 [0, 0]을 return 한다.
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
int idx = 0;
map<string, int> m; // 영어 단어, 횟수
for(int i = 0; i < words.size() - 1; i++){
m[words[i]]++;
if(m[words[i + 1]] > 0){ // 첫번째 조건
idx = i + 1;
break;
}
if(words[i][words[i].size() - 1] != words[i + 1][0]){ // 두번째 조건
idx = i + 1;
break;
}
}
if(idx == 0) {
answer.push_back(0);
answer.push_back(0);
}
else{
answer.push_back(idx % n + 1);
answer.push_back(idx / n + 1);
}
return answer;
}
'🍞 Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스][Level2] 이진 변환 반복하기 c++ (0) | 2022.10.21 |
---|---|
[프로그래머스][Level2] 오픈채팅방 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 수식 최대화 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 배달 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] [3차] n진수 게임 c++ (0) | 2022.10.21 |