1번째시도 : 그냥 틀려버림
더보기
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
vector<int> solution(vector<string> gems) {
vector<int> answer;
answer.push_back(1);
answer.push_back(100002);
map<string, bool> lists;
int minlen = 100002;
int endNum = gems.size();
string startName = gems[0];
//보석리스트 받아오기
for(int i = 0; i < gems.size(); i++)
lists[gems[i]] = false;
for(int i = 0; i < gems.size(); i++)
{
map<string, bool> visited = lists;
int counts = 0;
for(int j = i; j < endNum; j++)
{
if(visited[gems[j]] == false)
{
visited[gems[j]] = true;
counts++;
}
if(counts == visited.size())
{
if(minlen > j - i)
{
minlen = j - i;
answer[0] = i + 1;
answer[1] = j + 1;
endNum = j + 1;
}
}
else
{
startName = gems[j - 1];
for(int k = j; k < gems.size(); k++)
{
if(gems[j] == startName)
{
endNum = k + 1;
break;
}
}
}//else
}
}
return answer;
}
2번째 시도 : 그래도 테스트는 맞는데 채점이 몇개 틀리고 효율성 쓰레기
더보기
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(vector<string> gems) {
vector<int> answer;
map<string, bool> visited;
int left = 0;
int right = gems.size();
int min_length = 100001, min_left = 100001, min_right = 100001;
for(int i = 0; i < gems.size(); i++)
visited[gems[i]] = false;
if(visited.size() == 1)
{
answer.push_back(1);
answer.push_back(1);
return answer;
}
for(int i = 0; i < gems.size();i++)
{
int counts = 0;
map<string, bool> temp = visited;
for(int j = left; j < right; j++) //찾기
{
if(temp[gems[j]] == false)
{
temp[gems[j]] = true;
counts++;
}
if(counts == temp.size())
{
if(left < gems.size())
left++;
if(j + 1 < gems.size())
right = j + 1;
if(min_length < right - left) break;
if(min_length > right - left)
{
min_length = right - left;
min_left = left;
min_right = right;
}
else if(min_length == right - left)
{
if(min_left > left)
{
min_left = left;
min_right = right;
}
}
break;
}
}
if(counts < temp.size())
{
if(right < gems.size())
right++;
}
}
answer.push_back(min_left);
answer.push_back(min_right);
return answer;
}
'Algorithm > Programmers' 카테고리의 다른 글
[C++] 프로그래머스 부족한 금액 계산하기 (0) | 2021.08.03 |
---|---|
[C++] 프로그래머스 등굣길 DP (0) | 2021.05.10 |
[C++] 프로그래머스 오픈채팅방 2019카카오블라인드 (0) | 2021.05.10 |
[C++] 프로그래머스 가장먼노드 BFS (0) | 2021.05.09 |
[C++] 프로그래머스 수식최대화 2020카카오인턴십 (0) | 2021.05.06 |