프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 방법
1. 같은 단어를 말하는지 검사하기 위해 string을 Key, int를 Value로 가지는 map형을 선언
2. 첫 단어를 삽입하고 m[words[i]]++해준다.
3. 이후부터는 앞의 단어의 끝 문자와 현재 단어의 첫 문자가 다르거나, m[words[i]]가 1이면 해당 순서의 번호와 차례를 리턴한다.
4. 위의 조건에 만족하지 않는다면 \m[words[i]]++을 하고 계속해서 반복한다.
5. 만약 탈락자가 생기지 않는다면 {0, 0}을 리턴
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(int n, vector<string> words) {
map<string, int> m;
for(int i = 0; i < words.size(); i++) {
if(i > 0) {
if(words[i].front() != words[i-1].back() || m[words[i]])
return {i % n + 1, i / n + 1};
}
m[words[i]]++;
}
return {0,0};
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
N개의 최소공배수/C++ (0) | 2023.01.10 |
---|---|
구명보트/C++ (1) | 2023.01.10 |
카펫/C++ (0) | 2023.01.06 |
짝지어 제거하기/C++ (0) | 2023.01.06 |
다음 큰 숫자/C++ (0) | 2023.01.06 |