-
프로그래머스 Lv2 영어 끝말잇기Computer Science/프로그래머스 2023. 9. 30. 09:34
https://school.programmers.co.kr/learn/courses/30/lessons/12981
나는 이 문제를 다음과 같이 풀었다.
1. 이미 말한 단어를 벡터에 저장한다. 다음 단어 차례일 때 벡터에 문자열이 있는지 검사한다.
2. 현재 단어가 이전 단어의 마지막 단어와 일치하는지 확인한다.
3. 위 조건에 맞다면 (i / 2) + 1을 하여 현재 순서를 리턴하도록 했다.
그리고 n명의 사람 중 몇번째 사람 순서인지 알 수 있도록 index를 관리했다.
#include <string> #include <vector> #include <iostream> #include <algorithm> using namespace std; vector<int> solution(int n, vector<string> words) { vector<int> answer; int index = 1; vector<string> vec; vec.resize(n + 1); string lastString = ""; for(int i = 0; i < words.size(); ++i) { auto iter = find(vec.begin(), vec.end(), words[i]); if(iter != vec.end()) { answer.push_back(index); answer.push_back(i / n + 1); return answer; } if(lastString.size() > 0) { if(lastString[lastString.size() - 1] != words[i][0]) { answer.push_back(index); answer.push_back(i / n + 1); return answer; } } lastString = words[i]; vec.push_back(words[i]); ++index; if(index > n) index = 1; } // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다. answer.push_back(0); answer.push_back(0); return answer; }
'Computer Science > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 짝지어 제거하기 (0) 2023.09.30 프로그래머스 Lv2 배달 (0) 2023.09.30 프로그래머스 Lv2 예상대진표 (0) 2023.09.30 카메라 (0) 2023.09.29 프로그래머스 Lv2 [1차]뉴스 클러스터링 (0) 2023.09.29