알고리즘/programmers

[Programmers 코딩테스트 고득점 Kit] 큰 수 만들기

꾸준함. 2021. 9. 24. 19:36

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42883

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

 

알고리즘은 아래와 같습니다.

1. 우선, 정답을 앞에 k개의 숫자를 제거한 숫자로 세팅합니다.

2. 0 ~ [k - 1] 번째 숫자 중 answer 문자열의 앞쪽에 포함된 숫자보다 큰 숫자가 있을 수 있습니다.

2.1 해당 케이스가 성립할 경우 바꿔줍니다.

2.2 문자열의 앞쪽에 포함된 숫자가 해당 숫자보다 클 경우 다음 숫자와 비교해줍니다.

3. 2번 과정을 0 ~ [k - 1] 번째 숫자까지 적용해줍니다.

4. 정답을 반환합니다.

 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string number, int k) {
string answer = number.substr(k);
for (int i = k - 1; i >= 0; i--)
{
int idx = 0;
while (idx < answer.size())
{
if (answer[idx] > number[i])
{
break;
}
swap(answer[idx++], number[i]);
}
}
return answer;
}
int main(void)
{
string number = "1231234";
int k = 3;
cout << solution(number, k) << "\n";
return 0;
}
view raw .cpp hosted with ❤ by GitHub

 

개발환경:Visual Studio 2017

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형