티스토리 뷰
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/42883?language=python3
코드
from itertools import combinations
def solution(number, k):
answer = ''
per = list(combinations(number,len(number)-k))
result = []
for i in per:
result.append(int("".join(i)))
return str(max(result))
조합을 이용하여 풀려 했으나 시간초과..
from itertools import combinations
def solution(number, k):
stack = []
for i in number:
while stack and i > stack[-1]:
if k > 0:
stack.pop()
k -= 1
else:
break
stack.append(i)
if k > 0:
for i in range(k):
stack.pop()
answer = "".join(stack)
return answer
stack을 이용하여 한개한개 값을 비교하여 pop 해주고 append해줘서 풀어야 하는 문제인 것 같다.
for문을 다돌았는데 k가 0보다 크다면 맨 뒤부터 k만큼 자릿수를 잘라주면 된다.
원하는 자릿수에 가장 큰 값을 구하면 되는데 가장 큰 수를 맨앞에 넣어놨기 때문에 맨 뒤를 뺴주면 가장 큰 수가 완성된다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level2, JadenCase 문자열 만들기 (Python) (0) | 2021.06.06 |
---|---|
[프로그래머스] Level2, 피보나치 수 (Python) (0) | 2021.06.05 |
[프로그래머스] Level2, N개의 최소공배수 (Python) (0) | 2021.06.04 |
[프로그래머스] Level2, 스킬트리 (Python) (0) | 2021.06.04 |
[프로그래머스] Level2, 다리를 지나는 트럭 (Python) (0) | 2021.06.03 |
댓글