본문 바로가기
#알고리즘 [Algorithm]/Problem

[프로그래머스 - 탐욕법] 큰 수 만들기

by cy_mos 2019. 4. 21.
반응형

[프로그래머스 - 탐욕법] 큰 수 만들기


📄 [탐욕법] 큰 수 만들기 C++ Source Code

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string solution(string number, int k) {

	vector<char> bucket;
	vector<int> removeAt;

	// MARK: - 주어진 숫자로부터 하나씩 꺼내어 모으면서, 이때 모아둔 것 중 지금 등장한 것보다 작은 것들을 빼낸다.
	for (const auto letter : number) {
		// MARK: - 현재 조합하고자 하는 배열이 비어있는 경우
		if (bucket.empty()) { bucket.push_back(letter); continue; }

		// MARK: - 현재의 숫자들이 추가 될 숫자보다 작은 경우에는 제거한다.
		while (!bucket.empty() && removeAt.size() != k && bucket.back() < letter) {
			removeAt.push_back(bucket.back()); bucket.pop_back();
		}
		
		bucket.push_back(letter);
	}

	// MARK: - 내림차순으로 정렬이 되어있는 경우에는 끝의 K만큼 제거한다.
	string answer = removeAt.empty() ? number.substr(0, number.size() - k) : string(bucket.begin(), bucket.end());
	return answer;
}

🚀 REFERENCE

반응형

댓글