https://programmers.co.kr/learn/courses/30/lessons/42883
아 진짜.. 날이갈 수록 모르는건 많다는 걸 너무 느낀다...
작은 수를 빼면 되는 거 아닌가? 라고 생각하였다.
하지만 문제를 자세히 보니 순서대로 나열이 되어있는 상태로 빼는 수이므로 작은 수만 빼서는
답이 나오지 않는 다는 것을 예제 3번에서 확인했다.
맥스값을 앞에 넣고 다시 맥스값을 다음 수에 넣는 방식을 생각했으나,
맥스값이 맨뒤에 있을 경우 문제를 풀려고 노력했으나,
재귀함수에서 함수값을 가져오는 오류가 생겼다...
def max_number(number_list, k):
result =""
for i,j in enumerate(number_list):
if j == max(number_list) and i <= k:
result += j
k -= i
number_list = number_list[i+1:]
print(result)
if k != 0:
return result+max_number(number_list, k)
else :
return result
elif j == max(number_list) :
print(i,j)
print(number_list[:i])
result = ''.join(number_list[i:])
number_list= number_list[:i]
print("len",len(result))
n = n-len(result)
return max_number(number_list, k) + result
1시간동안 잡고 있었으나, 풀리지 않아 다른사람의 풀이를 보며 다시 배워보자 라고 생각했고,
스택을 이용하여 풀이를 푼 사람의 풀이를 보고 해석하며 나의 것으로 만들려고 노력한 결과..
정답이 나왔다ㅠㅠㅠㅠㅠ
number, k = "1000", 1
def solution(number, k):
result =[]
for i in number:
while result and result[-1] < i:
if k > 0:
result.pop()
k -= 1
else:
break
result.append(i)
while len(result) > len(number)-k:
result.pop()
return "".join(result)
solution(number, k)
[coding-test] 네트워크 (0) | 2021.07.21 |
---|---|
[codint_test]짝지어 제거하기 (0) | 2021.06.09 |
[coding_test]크레인 인형뽑기 (0) | 2021.05.31 |
[coding_test]기능개발 (0) | 2021.05.25 |
[coding_test]더 맵게 (0) | 2021.05.24 |