TIL/kotlin 알고리즘

kotlin 프로그래머스 lv2 탐욕법 큰수 만들기

crablo 2024. 3. 25. 11:37
728x90

해당문제를 풀때, 문장이 길지 않아서 쉽게 풀릴것으로 예상했지만, 내 예상이 맞질 않았다.

처음에는 간단히 주어진 number를 CharArray로 바꾸고 나눌생각만했는데, 문제를 풀다보니 k를 제거하는것이어서

다시 문제를 읽고 해결했다.

number을 문자타입의 배열로 변환 후 해당 문자들을 하나씩 꺼내서 결과적으로 가장 큰 수를 만들어내면 되는것 같았다.

문제를 푼과정은 다음과 같았다.

1. number의 형을 배열로 변환한다.

2. 스택초기화:

문자형타입의 스택을 초기화해서 결과를 담으려고했다.

 

3. 숫자 순회:

코드가 입력 숫자의 각 자릿루를 반복하면서 각 숫자에 대해 스택의 맨 위 숫자가 현재 숫자보다 작고 아직 제거할 수 있는 횟수가 남아있는 경우, 스택에서 숫자를 제거한다.

 

4. 스택에 숫자 추가:

현재 숫자를 스택에 추가한다. 이때 현재 숫자보다 작은 숫자는 이미 제거되었거나 스택에 남아있을 수 있다.

5. 제거 가능한 횟수만큼 스택 정리:

제거 가능한 횟수가 남아 있는 경우, 스택에서 숫자를 제거함.

스택의 맨 위에서부터 숫자를 제거하고, 제거 횟수를 증가한다.

6. 결과 반환:

스택에 남아있는 숫자들을 문자열로 변환하여 반환한다.

반환된 문자열은 제거된 숫자를 제외한 가장 큰 수를 나타낸다.

 

728x90