https://programmers.co.kr/learn/courses/30/lessons/12981
#include <string>
#include <vector>
#include <iostream>
#include <set>
using namespace std;
vector<int> solution(int n, vector<string> words) {
set<string> s;
vector<int> answer(2);
// 첫번째 단어 push
s.insert(words[0]);
// 2번째 단어부터 검사
int len = words.size();
for (int i = 1; i < len; ++i)
{
// 단어가 2번 이상 등장하거나, 앞 단어의 끝 글자와 같지 않다면
if (s.find(words[i]) != s.end() || *words[i - 1].rbegin() != words[i][0])
{
answer[0] = i % n + 1;
answer[1] = i / n + 1;
return answer;
}
// 단어 push
s.insert(words[i]);
}
return answer;
}
set 대신에 map을 사용해서 카운팅 해줘도 된다.
string의 끝 글자가 필요할 땐 rbegin() 함수가 유용하다.
*words[i - 1].rbegin()
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스]2018 KAKAO BLIND RECRUITMENT : 뉴스 클러스터링 (level 2)(c++) (0) | 2020.05.25 |
---|---|
[프로그래머스]2017 팁스타운 : 예상 대진표 (level 2)(c++) (0) | 2020.05.24 |
[프로그래머스]Summer/Winter Coding(~2018) : 점프와 순간 이동 (level 2)(c++) (0) | 2020.05.23 |
[프로그래머스] Summer/Winter Coding(~2018) : 소수 만들기 (level 2)(c++) (0) | 2020.05.22 |
[프로그래머스]연습문제 : 피보나치 수(level 2)(c++) (0) | 2020.05.20 |
댓글