본문 바로가기

알고리즘 문제

프로그래머스 큰 수 만들기


def solution(number, k):
s=0
length=len(number)
for i in range(k):
isEnd=True
for j in range(s,length-1):
if number[j]<number[j+1]:
isEnd=False
number=number[:j]+number[j+1:]
length-=1#숫자 하나를 제외했으므로 길이 감소
# 제외된 인덱스에 뒤 인덱스 값이 오므로 인덱스 조정해야 함
if j>0:#인덱스가 1이상인 경우 인덱스 하나 줄이면 제자리에서 새로 온 값과 다시 비교 가능해짐(위 for문에서 s가 1 증가하므로)
s=j-1
else:#인덱스가 0인 경우 처음부터 다시 비교
s=0
break#작은 수 제외시켰으므로 다음 것 찾기
if isEnd==True:#문자열 맨 마지막을 제외 시킴
print('hi')
number=number[:-1]
s=j-1#인덱스 하나 줄이기
return number
print(solution("1924",2))
print(solution("1231234",3))
print(solution("4177252841",4))
print(solution("4177252841",1))
print(solution("321",1))


수정한 코드

def solution(number, k):
length = len(number)
i = 0
while i < length - 1 and k > 0:
if number[i] < number[i+1]:
if i != 0:
number = number[:i] + number[i+1:]
length -= 1
k -= 1
i -= 1
else:
number = number[:i] + number[i + 1:]
length -= 1
k -= 1
i = 0
else:
i += 1
if k > 0:
return number[:-k]
return number


https://programmers.co.kr/learn/courses/30/lessons/42883?language=python3

'알고리즘 문제' 카테고리의 다른 글

프로그래머스 구명보트  (0) 2018.10.26
프로그래머스 조이스틱  (0) 2018.10.11
프로그래머스 예상 대진표  (0) 2018.10.06
프로그래머스 소수 만들기  (0) 2018.10.06
프로그래머스 항상 정답  (1) 2018.10.06