1. 문제
코딩테스트 연습 - 영어 끝말잇기
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
2. 소스코드
- unordered_map을 사용해서 단어의 중복을 체크.
- 단어가 중복되거나, 끝말잇기가 되지 않는 경우, 틀린 위치에서 정답을 갱신 후 리턴.
- 틀린 위치를 기준으로 몇 번째 시행인지, 몇 번째 사람인지 계산한다.
소스코드
#include <string>
#include <vector>
#include <iostream>
#include <unordered_map>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer = {0,0};
unordered_map<string,bool>map;
map[words[0]] = true;
for(int i = 1; i < words.size(); ++i){
if((words[i-1][words[i-1].size()-1] != words[i][0]) or map[words[i]]){
answer[0] = i % n +1;
answer[1] = i / n + 1;
return answer;
}
else map[words[i]] = true;
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스 / 문자열 ] 뉴스 클러스터링 (KaKao) (0) | 2020.07.02 |
---|---|
[ 프로그래머스 / 구현 ] 캐시 (KaKao) (0) | 2020.07.01 |
[ 프로그래머스 / 문자열 ] 오픈채팅방 (0) | 2020.07.01 |
[ 프로그래머스 / 진법 ] 다음 큰 숫자 (0) | 2020.06.30 |
[ 프로그래머스 / 우선순위큐 ] 라면공장 (0) | 2020.06.30 |