문제 주소입니다.
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
1. 문제 설명
2. 문제 해석
3. 소스 코드
4. 결과
1. 문제 설명
1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.
다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → mother → robot → tank 위 끝말잇기는 다음과 같이 진행됩니다.
끝말잇기를 계속 진행해 나가다 보면, 3번 사람이 자신의 세 번째 차례에 말한 tank 라는 단어는 이전에 등장했던 단어이므로 탈락하게 됩니다. 사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return 하도록 solution 함수를 완성해주세요. |
제한사항
|
예시
입출력 예
n | words | result |
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] |
2 | [hello, one, even, never, now, world, draw] | [1,3] |
2. 문제풀이
몇가지만 주의하면 쉽게 구현할 수 있었다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(int n, vector<string> words) {
map<string, int> word;
word[words[0]]++;
for(int i=1; i<words.size(); i++){
if(word[words[i]] || words[i].front() != words[i-1].back())
return {(i%n)+1,(i/n)+1};
word[words[i]]++;
}
return {0, 0};
}
|
4. 결과
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
124 나라의 숫자 C++[프로그래머스] (0) | 2020.05.10 |
---|---|
예상 대진표 C++(팁스다운)[프로그래머스] (0) | 2020.05.09 |
최대공약수와 최소공배수 C++[프로그래머스] (0) | 2020.05.07 |
호텔방 배정 python(카카오 2019 겨울인턴십)[프로그래머스] (0) | 2020.05.06 |
불량사용자 python(카카오 2019겨울인턴십)[프로그래머스] (0) | 2020.05.05 |
댓글