728x90
반응형
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12981
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90
👩💻 코드
#include <string>
#include <vector>
#include <unordered_set>
using namespace std;
vector<int> solution(int n, vector<string> words) {
unordered_set<string> used_words;
used_words.insert(words[0]);
char last_char = words[0].back();
for(int i=1; i<words.size(); i++){
if(last_char != words[i].front() || used_words.find(words[i]) != used_words.end()){
return {i % n + 1, i / n + 1};
}
used_words.insert(words[i]);
last_char = words[i].back();
}
return {0, 0};
}
📝 풀이
같은 단어를 사용하여 탈락하는 경우를 위하여 unordered_set에 사용된 단어를 저장했다.
단어를 말 할 때마다 find를 이용하여 기존에 존재하는지 확인하고 이미 사용한 단어면 return.
앞 사람이 말한 단어의 마지막 글자로 시작하는 단어가 아닌 경우에는 last_char에 마지막 문자를 저장했다.
단어를 말 할 때 마다 저장된 마지막 글자가 말한 단어의 앞 글자와 맞는지 비교 후 다르다면 return.
return 할 때는 현재 몇 번째 사람인지와 몇 번째 차례인지를 i와n의 나머지와 몫을 이용하여 구한다.
인덱스는 0부터 시작하고 차례는 1부터 시작하기 때문에 구한 값에 +1를 해주어야 한다.
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 귤 고르기 (0) | 2024.07.22 |
---|---|
[프로그래머스] 예상 대진표 (0) | 2024.07.21 |
[프로그래머스] N개의 최소공배수 (0) | 2024.07.19 |
[프로그래머스] 멀리 뛰기 (0) | 2024.07.19 |
[프로그래머스] 구명보트 (0) | 2024.07.18 |