큰 수 만들기 / Greedy

2025. 4. 25. 10:50·공부/Code Cata

https://school.programmers.co.kr/learn/courses/30/lessons/42883#qna

 

number의 길이가 아주 큰 값이기 때문에, Greedy로 다음 수가 더 크다면 현재의 수를 지워나가는 방식으로 문제를 해결해야 했다.

✅ Greedy 풀이

#include <string>
#include <vector>

using namespace std;

string solution(string number, int k) 
{
    string answer = number;
    auto it = answer.begin();

    while (k > 0)
    {
        if (it + 1 == answer.end() || *it < *(it + 1))
        {
            answer.erase(it);
            it = answer.begin();

            k--;
            continue;
        }

        it++;
    }

    return answer;
}
while문의 if 조건문을 살펴보면, 우선 현재의 it이 가리키는 수보다 다음 인덱스의 수가 더 크다면 현재의 수를 지운다.
그리고 it을 다시 시작점으로 설정하고, 처음부터 다시 검사를 시작해나간다. 이때 현재의 수를 지웠으므로 k 값을 -1 해준다.

"it + 1 == answer.end( )" 조건은 만약 지워야할 글자 수인 k가 남아있는데도 불구하고 it의 다음이 end라면 현재 it을 무조건 지워줘야 end 이상을 가리키지 않는다.

현재의 숫자보다 뒤의 숫자가 크다면, 현재의 숫자를 제거하면 미래엔 가장 큰 수를 얻게 될 것이라는 Greedy 알고리즘을 적용한 풀이이다.

'공부 > Code Cata' 카테고리의 다른 글

택배 상자 / stack  (0) 2025.04.24
쿼드압축 후 개수 세기 / 재귀  (0) 2025.04.24
소수 찾기 / 순열, DFS  (0) 2025.04.24
가장 큰 수 / 정렬  (0) 2025.04.23
다리를 지나는 트럭 / 큐  (0) 2025.04.23
'공부/Code Cata' 카테고리의 다른 글
  • 택배 상자 / stack
  • 쿼드압축 후 개수 세기 / 재귀
  • 소수 찾기 / 순열, DFS
  • 가장 큰 수 / 정렬
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    큰 수 만들기 / Greedy
    상단으로

    티스토리툴바