💡solutions )
💬 이미 k개 만큼의 숫자 삭제를 완료한 경우에는 s 스택에 모두 넣기
💬 첫번째 숫자는 먼저 넣고 시작하며, while문 안에서 s 스택에 넣어야 하는 숫자(i)와 기존 s 스택에 담겨있는 숫자들의 크기를 비교하기 -> i가 기존 숫자보다 크면 기존 숫자 제거(pop하고 cnt +1)
💬 이미 k개를 모두 삭제하거나 i가 기존 숫자보다 작거나 같은 경우에는 break를 걸어 while문 중단
💬 숫자를 다 넣었는데 아직 제거해야 할 k가 남아 있는 경우, 맨 뒤에서부터 pop으로 남은 k개수 만큼 숫자 삭제
💬 참고로 나의 경우 첫 시도에선 마지막 12번 케이스 통과하지 못 했고, 아래 두 가지 테스트케이스를 넣어 코드를 수정한 후 통과할 수 있었다.
# 12번 대비 테스트케이스 |
🎫code )
def solution(number, k):
s = []
cnt = 0
for i in number:
if cnt == k:
s.append(i)
else:
if not s:
s.append(i)
print(s)
else:
while s:
if cnt == k or i <= s[-1]:
break
if i > s[-1]:
s.pop()
cnt += 1
s.append(i)
while cnt !=k:
s.pop()
cnt += 1
return ''.join(s)
📌 description )
문제출처 : programmers.co.kr/learn/courses/30/lessons/42883?language=python3
문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건
입출력 예
|
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 숫자의 표현 /파이썬 /Python (0) | 2020.09.18 |
---|---|
[프로그래머스] 후보키 /파이썬 /Python /2019 KAKAO BLIND RECRUITMENT /카카오 코테 (1) | 2020.09.17 |
[프로그래머스] 조이스틱 /파이썬 /Python /탐욕법(Greedy) (4) | 2020.09.11 |
[프로그래머스] 다트게임 /파이썬 /Python/ 2018 KAKAO BLIND RECRUITMENT/ 카카오 코딩 테스트 (0) | 2020.09.10 |
[프로그래머스] 프렌즈4블록 /파이썬 /Python /2018 KAKAO BLIND RECRUITMENT (2) | 2020.09.08 |