프로그래머스 LV2 - 영어끝말잇기

2022. 11. 9. 14:10코딩테스트/프로그래머스

순서
     링크
     문제풀이
     코드
문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12973

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제풀이

Words라는 string을 담는 vector에 들어있는 값을 순회하면서

조건.1 중복된 단어를 말했는지

조건.2 앞 단어의 끝 문자열과 지금 순회하고 있는 문자열의 앞이 같은지 

위 2가지를 판별해야한다.

 

(처음에 문제규칙을 이해를 못해서 이해하는데 한참이 걸렸다.)

코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <string>
#include <vector>
#include <iostream>
#include <map>
 
using namespace std;
 
vector<int> solution(int n, vector<string> words) {
    vector<int> answer(2);
 
    map<string,int> used;
    
    used[words[0]]++;
    
    for(int i = 1; i<words.size();i++)
    {
        used[words[i]]++;
        
        if(used[words[i]]>1 ||  words[i].front() != words[i-1].back() )
        {
            answer[0= i%n+1;
            //순서대로 순회하고 있는 순서는 n으로 나눈 나머지와 같고
            //0 1 2 0 1 2 0 1 2 
            answer[1= i/n+1;
            //몇번 순회하였는지는 n으로 나눈 몫과 같다
            //0 0 0 1 1 1 2 2 2 
            break;
        }
    }
 
    return answer;
}
cs