문제 링크입니다: 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. 정답을 반환합니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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; | |
} |

개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers 코딩테스트 고득점 Kit] 섬 연결하기 (0) | 2021.09.24 |
---|---|
[Programmers 코딩테스트 고득점 Kit] 구명보트 (0) | 2021.09.24 |
[Programmers 코딩테스트 고득점 Kit] 조이스틱 (0) | 2021.09.24 |
[Programmers 코딩테스트 고득점 Kit] 체육복 (0) | 2021.09.24 |
[Programmers 코딩테스트 고득점 Kit] 이중우선순위큐 (0) | 2021.09.23 |