습관처럼
programmers [C++] : 2019 카카오 개발자 겨울 인턴십 튜플 본문
programmers.co.kr/learn/courses/30/lessons/64065
문제 설명
셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다.
n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an)
DERECTION
튜플은 다음과 같은 성질을 가지고 있습니다.
1. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2)
2. 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2)
3. 튜플의 원소 개수는 유한합니다.
예를 들어 튜플이 (2, 1, 3, 4)인 경우 이는 {{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}가 됩니다. 이때, 집합은 원소의 순서가 바뀌어도 상관없으므로
{{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}} , {{2, 1, 3, 4}, {2}, {2, 1, 3}, {2, 1}} , {{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}} 는 모두 같은 튜플 (2, 1, 3, 4)를 나타냅니다.
접근 방법
어떻게 하면 쉽게 풀까 고민하다 결국은 원시적으로 풀었네요 ㅠㅠ
1. 첫 '{' 마지막'}'는 의미가 없으므로 범위를 지정할때 1 부터 n-2부터 진행합니다.
2. '{'를 시작으로 ','이전까지의 숫자를 합쳐 임시 vector에 저장합니다. 이렇게 하나의 숫자를 저장할때마다 count를 해줍니다.
(원소의 개수가 3개면 vec[3]에 저장되도록 하기 위해서 카운트를 했습니다~)
3. 저장소인 임시벡터의 원소를 ans백터에 넣습니다.
4. 원소가 1개인 벡터에서 원소를 Int로 바꾸어 넣어주면서 중복을 피합니다.
코드
#include <cstring>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
bool chk(int a, vector<int>ans){
for(int i=0;i<ans.size();i++){
if(ans[i]==a) return false;
}
return true;
}
vector<int> solution(string s) {
vector<int> answer;
int s_size=s.size();
int count=0;
int numOfAtom=0;
vector<string>ans[1000001];
vector<string>temp;
string a="";
for(int i=1;i<s_size-1;i++){
if(s[i]=='{') continue;
else if(s[i]=='}'){
count++;
numOfAtom++;
temp.push_back(a);
for(int k=0;k<temp.size();k++)
ans[numOfAtom].push_back(temp[k]);
a="";numOfAtom=0;
temp.clear();
continue;
}
else if(s[i]==','){
if(a.compare("")!=0){
numOfAtom++;
temp.push_back(a);
a="";
}
else continue;
}
else a+=s[i];
}
for(int i=1;i<=count;i++){
for(int j=0;j<ans[i].size();j++){
int num=stoi(ans[i][j]);
if(chk(num,answer)==false)continue;
answer.push_back(num);
}
}
return answer;
}
funny algorithm )_<
'Algorithms > programmers' 카테고리의 다른 글
programmers [C++] : 짝지어 제거하기 (0) | 2020.06.22 |
---|---|
programmers [C++] : 폰켓몬 (0) | 2020.06.22 |
programmers [C++] : 2020 KAKAO BLIND RECRUITMENT 가사검색 (0) | 2020.06.22 |
programmers [C++] : 2020 KAKAO BLIND RECRUITMENT 문자열 압축 (0) | 2020.06.18 |
programmers [C++] : 지형 이동 (0) | 2020.06.17 |