먼저 처음 포인트는 이 숫자들을 리스트에 받아줘야하는데, 띄워쓰기로 구분되어있지 않기 때문에
항상 받아왔던 방식인 map(int, input().split()) 방식으로 받을 수가 없다.
그래서 str로 받아서 이것들을 list에 넣는뒤, 다시 int형으로 변환시켜준다.
b_num, delete = map(int, input().split())
nums = []
for i in range(len(str(b_num))):
nums.append(str(b_num)[i])
nums = list(map(int, nums))
그 후, 새로운 리스트를 만들어 nums에 있는 수들을 끄집어 내며 하나씩 비교해보고,
새로운 리스트에 들어있는 수보다 nums[0]에 들어있는 수가 크다면 이를 빼주고,
삭제할 수 있는 개수인 delete 문을 -1 해준다.
그 조건에 들어가지 않으면 nums에 들어있는 첫번째 원소를 pop해주고 이를 새 리스트에
넣어준다.
while len(nums) != 0:
if len(new_nums) != 0 and new_nums[-1] < nums[0] and delete > 0:
new_nums.pop()
delete -= 1
continue
new_nums.append(nums.pop(0))
이를 기존 리스트가 다 pop 될 때 까지 반복해주면 새 리스트에 내림차순으로 정렬되어 있을 것이다.
그래서 남은 삭제해야하는 숫자인 delete 만큼 뒤에서 끊으면 된다.
if delete != 0:
new_nums = new_nums[:-delete]
후에 리스트에 있는 숫자들을 하나로 출력해준다.
for num in new_nums:
print(num, end="")
'CS > Data Structure & Algorithm' 카테고리의 다른 글
공주 구하기 (덱, 큐 ) (0) | 2022.06.13 |
---|---|
역수열 (그리디 알고리즘) (0) | 2022.06.10 |
결정 알고리즘 (랜선 자르기) (0) | 2022.06.01 |
탐색 & 시뮬레이션 [수토쿠 검사] (죽음의 4중 포문...) (0) | 2022.05.31 |
한방향 연결리스트 및 연산(삽입, 삭제, 탐색) (0) | 2022.02.06 |