[Python] BOJ / 2812번 / 크게 만들기

2022. 6. 29. 12:02·🥇 Problem Solving/Greedy
 

2812번: 크게 만들기

N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.

www.acmicpc.net


📝 풀이

  • N자리 숫자가 주어졌을 때, 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램
  • 전체 자릿수에 대해서 아래 과정을 반복한다
    • 스택에 i번째 자릿수 값을 저장
    • 숫자 제거 횟수가 남아 있고(del_cnt > 0) 스택에 저장되어 있는 원소가 있는 경우
      • 스택의 끝 수와 i번째 수를 비교하여 i번째 수보다 작은 스택의 끝 수를 제거하고 숫자 제거 횟수를 갱신시킴
  • 결과를 출력할 때에는 스택에 담겨있는 수를 전체 자릿수에서 제거할 횟수를 뺀 만큼 순서대로 출력

💻 소스코드

import sys

input = sys.stdin.readline

n, k = map(int, input().split())
nums = list(map(int, input().strip()))

# 숫자 제거 횟수, 결과 리스트
del_cnt, stack = k, []

# n자리까지 반복
for i in range(n):
    while del_cnt > 0 and stack:
        # i번째 수보다 작은 리스트의 끝 수를 모두 제거
        if stack[len(stack) - 1] < nums[i]:
            stack.pop()
            del_cnt -= 1
        else:
            break
    stack.append(nums[i])

# 결과 리스트에 담겨있는 수를 전체 자릿수에서 제거할 횟수를 뺀 만큼 출력
for i in range(n - k):
    print(stack[i], end = '')
저작자표시 (새창열림)

'🥇 Problem Solving > Greedy' 카테고리의 다른 글

[Python] BOJ / 1946번 / 신입 사원  (0) 2023.04.25
[Python] BOJ / 13305번 / 주유소  (0) 2023.04.24
[Python] BOJ / 3109번 / 빵집  (0) 2022.06.04
[Python] BOJ / 1700번 / 멀티탭 스케줄링  (0) 2022.05.25
[Python] BOJ / 11000번 / 강의실 배정  (0) 2022.05.25
'🥇 Problem Solving/Greedy' 카테고리의 다른 글
  • [Python] BOJ / 1946번 / 신입 사원
  • [Python] BOJ / 13305번 / 주유소
  • [Python] BOJ / 3109번 / 빵집
  • [Python] BOJ / 1700번 / 멀티탭 스케줄링
Baeg-won
Baeg-won
  • Baeg-won
    좋았다면 추억이고 나빴다면 경험이다.
    Baeg-won
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🍃 Spring, Spring Boot
        • 스프링 프레임워크 기초
        • 스프링 핵심 원리 - 기본편
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편
        • 스프링 MVC
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리..
      • 🥑 Web Technoloy
      • 🚗 Backend Toy Project
        • 스프링 부트 게시판
        • Photogram
        • Baeg-won Clothing Gallery
      • 🥇 Problem Solving
        • Breadth-First Search
        • Depth-First Search
        • Backtracking
        • Simulation
        • Two-pointer
        • Binary Search
        • Greedy
        • Dynamic Programming
        • Minimum Spanning Tree
        • Dijkstra
        • Floyd warshall
      • ☕ Java
        • 명품 자바 에센셜
        • Applications
      • 🍦 JavaScript
        • JavaScript 기초
      • 🐧 Linux
        • 이것이 리눅스다(CentOS 8)
      • 📟 Database
        • 혼자 공부하는 SQL
      • 🧬 Data Structure
      • 🎬 HTML
      • 🎤 Tech Interview
      • 📌 etc
        • Unity 2D Raising Jelly Game
        • C++
        • 영어 쉐도잉
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Baeg-won
[Python] BOJ / 2812번 / 크게 만들기
상단으로

티스토리툴바