굥뷰를 햡시댜
[Programmers] 영어 끝말잇기 본문
https://programmers.co.kr/learn/courses/30/lessons/12981
코딩테스트 연습 - 영어 끝말잇기 | 프로그래머스
3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0]
programmers.co.kr
문제에서 하라는 대로 구현만 하면 된다.
처음에 이전 단어를 저장할 문자열 변수를 하나 선언하고 이 문자열의 마지막 글자와 다음 문자열의 첫 글자를 비교한다.
그리고 만약 다를 경우 기존에 계산한 것들을 answer에 추가해주고 리턴한다.
그리고 같은 문자가 나왔을 경우도 고려해줘야 하는데 나같은 경우는 같은 단어가 나오는 것을 알기 위해 map을 사용했다.
#include <string>
#include <vector>
#include <iostream>
#include <map>
using namespace std;
map<string, int> m;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
bool flag = true;
int cnt = 0, count = 1;
string before = "";
for(int i=0; i<words.size(); i++) {
cnt += 1;
if(cnt > n) {
cnt %= n;
count += 1;
}
if(before == "") before = words[i];
else {
if(before[before.length()-1] != words[i][0]) {
flag = false;
answer.push_back(cnt), answer.push_back(count);
break;
}
else {
before = words[i];
}
}
m[words[i]] += 1;
if(m[words[i]] > 1) {
flag = false;
answer.push_back(cnt);
answer.push_back(count);
break;
}
}
if(flag) {
answer.push_back(0), answer.push_back(0);
}
return answer;
}
'알고리즘 문제 풀이 > KaKao 문제 풀이' 카테고리의 다른 글
[Programmers] 전화번호 목록 (0) | 2019.10.11 |
---|---|
[Programmers] 타겟 넘버 (0) | 2019.10.11 |
[Programmers] 네트워크 (0) | 2019.10.11 |
[Programmers] 단어 변환 (0) | 2019.10.11 |
[Programmers] 올바른 괄호 (0) | 2019.10.08 |
Comments