문제
https://school.programmers.co.kr/learn/courses/30/lessons/12981
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
#include <string>
#include <vector>
#include <iostream>
#include <unordered_set>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
unordered_set<string> record;
int round, num;
record.insert(words[0]);
for(int i=1; i<words.size(); i++) {
if(record.find(words[i]) != record.end() || words[i].at(0) != words[i-1].at(words[i-1].length() - 1)) {
answer.push_back(i % n + 1);
answer.push_back(i / n + 1);
break;
}
record.insert(words[i]);
}
if(answer.empty()) {
answer.push_back(0);
answer.push_back(0);
}
return answer;
}
풀이
unordered_set(HashSet) 을 이용하여 단어들을 넣어준다. 만약 find 결과 존재한다면 중복된 단어를 외친 것이기에 그때의 결과를 반환한다. 중복된 단어 외에도 전 단어의 끝 알파벳과 현 단어의 시작 알파벳이 다르다면 역시 잘못된 것이기에 결과를 반환한다.