반응형
프로그래머스 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12981
#include <string>
#include <vector>
#include <iostream>
#include <cmath>
#include <unordered_map>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
unordered_map<string, bool> mapIsSaved;
size_t Size = words.size();
mapIsSaved.insert(make_pair(words[0], true));
for (size_t i = 1; i < Size; ++i)
{
// 나머지 연산자를 이용해서 몇번째 사람인지 알 수 있음.
// 0 이라면 n % n이 되는것이기 때문에 PersonNumb값은 n이됨.
int PersonNumb = (i + 1) % n;
if (PersonNumb == 0)
{
PersonNumb = n;
}
size_t StringSize = words[i - 1].size();
// ex) 이전 인덱스의 hello의 o와(마지막 인덱스) 현재 인덱스의 0번 값이랑 다르다면 break
if (words[i - 1][StringSize - 1] != words[i][0])
{
// 0인덱스부터 계산하는데 실제 카운트는 1 부터 하고있기 때문이다
float Count = ceil(((float)(i + 1) / (float)n));
answer.push_back(PersonNumb);
answer.push_back(static_cast<int>(Count));
break;
}
unordered_map<string, bool>::iterator Enable = mapIsSaved.find(words[i]);
// end랑 같다는것은 못찾았다는 의미이다 그러므로 insert
if (Enable == mapIsSaved.end())
{
mapIsSaved.insert(make_pair(words[i], true));
}
else
{
float Count = ceil(((float)(i + 1) / (float)n));
answer.push_back(PersonNumb);
answer.push_back(static_cast<int>(Count));
break;
}
}
if (answer.empty())
{
answer.push_back(0);
answer.push_back(0);
}
return answer;
}
반응형
'프로그래머스 > lv2' 카테고리의 다른 글
프로그래머스 : 소수 찾기(lv2) C++ (0) | 2022.11.05 |
---|---|
프로그래머스 : 가장 큰 수(lv2) C++ (0) | 2022.10.20 |
프로그래머스 : 카카오프렌즈 컬러링북 (lv2) C++ (0) | 2022.10.06 |
프로그래머스 : k진수에서 소수 개수 구하기 (lv2) C++ (0) | 2022.10.06 |
프로그래머스 : 괄호 회전하기 (lv2) C++ (0) | 2022.10.06 |
댓글