시나브로

[2019 카카오 개발자 겨울 인턴십] 튜플 본문

알고리즘/프로그래머스

[2019 카카오 개발자 겨울 인턴십] 튜플

혬혬 2020. 5. 9. 12:56
728x90

처음 문제를 풀었을 때는 이해가 되지 않았는데 카카오테크 글을 보니 풀이를 이해하고 풀 수 있었다. 

정확한 이해는 아니여서 풀이방법이 궁금하다면, 밑의 링크로 가서 참고하길 바란다.

https://tech.kakao.com/2020/04/01/2019-internship-test/

 

2019 카카오 개발자 겨울 인턴십 코딩 테스트 문제 해설 – tech.kakao.com

“2019년 카카오 개발자 겨울 인턴십” 공개 채용을 위한 1차 코딩 테스트가 지난 2019년 11월 9일 오후 2시부터 6시까지 총 4시간에 걸쳐 진행되었습니다. ’19년 신입공채 1차 코딩 테스트 시에 7문제가 출제되고 5시간의 풀이 시간이 주어졌던 것과는 달리 이번 인턴 코딩 테스트는 5문제가 출제되고 4시간의 풀이 시간이 주어졌습니다. 인턴의 경우 신입 공채와는 달리 인턴 과정을 통해 추가 검증을 하기 때문입니다. 이전과 동일하게 쉬운 문제를 앞쪽

tech.kakao.com

 

#include <cstring>
#include <vector>
#include<algorithm>
#include<iostream>
using namespace std;
vector <vector<int>> str_arr;
void bubble_sort() {
	int i, j;

	for (i = str_arr.size()-1; i >= 0; i--) {
		// 0 ~ (i-1)까지 반복
		for (j = 0; j < i; j++) {
			// j번째와 j+1번째의 요소가 크기 순이 아니면 교환
			if (str_arr[j].size() > str_arr[j + 1].size()) {
				vector<int> temp;
				temp.assign(str_arr[j].begin(),str_arr[j].end());
				str_arr[j].assign( str_arr[j + 1].begin(), str_arr[j+1].end());
				str_arr[j + 1].assign(temp.begin(),temp.end());
			}
		}
	}
}// vector size별로 정렬하기
int new_number(vector<int> a, vector<int> b) {
	for (int i = 0; i < b.size(); i++) {
		int signal = 0;
		for (int j = 0; j < a.size(); j++) {
			if (a[j] == b[i]) {
				signal = 1;
				break;
			}
		}
		if (!signal)
			return b[i];
	}
}// 집합 2개를 비교하여 새로 추가된 수를 탐색한다.

vector<int> solution(string s) {
	vector<int> answer;
	char str_buff[1000000];
	strcpy(str_buff, s.c_str());
	char* tok = strtok(str_buff, "}");
	while (tok != nullptr) {
		vector<int> k;
		for (int i = 0; i < string(tok).length(); i++) {
			if (string(tok)[i] >= 48 && string(tok)[i] <= 57) {
				int a = 0;
				for (;;i++) {
					if (string(tok)[i] >= 48 && string(tok)[i] <= 57) {
						a *= 10;
						a += string(tok)[i]-'0';
					}
					else
						break;
				}
				k.push_back(a);
				
			}
		}
		str_arr.push_back(k);
		tok = strtok(nullptr, "}");
	}//string을 숫자로 이차원 벡터에 넣기
	bubble_sort();
	answer.push_back(str_arr[0][0]);
	for (int i = 0; i < str_arr.size()-1; i++) {
		answer.push_back(new_number(str_arr[i], str_arr[i + 1]));
	}
	return answer;
}

 

https://programmers.co.kr/learn/courses/30/lessons/64065

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
Comments