2020 카카오 인턴 코테 문제
5시간을 잡고 실전처럼 진행하였으며 코드의 최적화나 알고리즘은 정확하지 않음.
코딩테스트 연습 - 보석 쇼핑 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 보석 쇼핑
["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7]
programmers.co.kr
3번 문제였으며 효율성과 정확도가 나뉜 문제이다. 약 두시간정도 걸렸다.
투포인터 문제였으며, 일반적인 투포인터 문제이다.
투포인터로 푸는건 알았으나 바로 접근방법이 떠오르지 않아 시간이 많이 걸렸다.
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
vector<int> solution(vector<string> gems) {
vector<int> answer(2, 0);
map<string, int> gem;
for (auto& i : gems)
gem[i] = 0;
int start = 0, end = 0;
int gem_size = gem.size();
int gem_cnt = 0;
int min_len = 100001;
while (1)
{
if (gem_cnt == gem_size)
{
if (end - start < min_len)
{
answer[0] = start + 1;
answer[1] = end;
min_len = end - start;
}
if (gem[gems[start]] <= 1)
gem_cnt--;
gem[gems[start]]--;
start++;
}
else
{
if (end == gems.size())
break;
if (gem[gems[end]] == 0)
gem_cnt++;
gem[gems[end]]++;
end++;
}
}
return answer;
}
'Coding_Test > 2020_KAKAO_INTERN' 카테고리의 다른 글
[2020 카카오 인턴] 경주로 건설 (C++) (0) | 2022.05.10 |
---|---|
[2020 카카오 인턴] 수식 최대화 (C++) (0) | 2022.05.10 |
[2020 카카오 인턴] 키패드 누르기 (C++) (0) | 2022.05.10 |