욤미의 개발일지
[Programmers] 큰 수 만들기 (Python) 본문
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
- 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.
- 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다.
- 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요.
구현
- Greedy로 분류되는 문제이고 코테에서 비슷한 문제로 출제된적이 있다고 해서 풀어보게 되었다.
- max나 index등을 이용할 필요가 없고 최대 number의 길이만큼만 stack에 삽입 삭제하기 때문에 짧은 시간에 답을 얻을 수 있다.
# 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 수를 구한다.
num = []
max_num = 0
def solution(number, k):
stack = [number[0]]
# 현재의 값을 저장한 뒤 다음에 나오는 값이 현재 값보다 크면 교체하고 작다면 이어 붙이는 방법
for i in number[1:]:
# 현재 값 i가 stack에 저장된 값들보다 크면
# stack의 값은 빼주고 제거해야하는 숫자 개수 k를 1씩빼준다.
while len(stack) > 0 and stack[-1] < i and k > 0:
stack.pop()
k -= 1
stack.append(i)
for i in range(k): : # 전부 이어붙인 상태에서 제거해야하는 숫자 개수가 남았다면 제거해줌
stack.pop()
answer = "".join(stack)
return answer
728x90
반응형
'Coding Test > 프로그래머스' 카테고리의 다른 글
[Programmers] 단속카메라 (Python) (0) | 2023.04.21 |
---|---|
[Programmers] 문자열 압축 (Python) (0) | 2023.04.21 |
Comments