programmers
level2 큰 수 만들기
문제 설명
#include <string>
#include <vector>
using namespace std;
string solution(string number, int k) {
string answer = "";
int start = 0, target = number.size() - k;
for(int i = target; i > 0; i--){
int max = 0;
for(int j = start; j <= number.size() - i; j++){
if(number[j] > max){
max = number[j];
start = j+1;
}
}
answer+=max;
}
return answer;
}
풀이 과정
처음에는 필요한 만큼 큰 수를 뽑아서 인덱스 순서대로 정렬해서 해결하려 했지만 틀린 방식이란 걸 알았습니다.
중점은 선택할 수 있는 숫자 중에서 가장 큰 수를 고르는 것이 해결법이라고 생각해서 필요한 자릿수만큼을 배열의 뒤에서부터 제외하고 나머지 중 가장 큰 수를 선택한 뒤 바로 뒤의 인덱스부터 선택 가능한 인덱스까지 가장 큰 수를 고르는 방식으로 해결했습니다.
- 요약
- 선택 가능한 수에서 가장 큰 수
- 선택 뒤에는 탐색의 시작 인덱스 이동
'baekjoon, programmers' 카테고리의 다른 글
| programmers 연속된 부분 수열의 합 (0) | 2025.02.15 |
|---|---|
| programmers 다리를 지나는 트럭 (0) | 2025.02.15 |
| programmers 숫자 변환하기 (0) | 2024.09.02 |
