백준(G3) 2812번: 크게 만들기(파이썬, Python3)

2023. 1. 9. 15:00·Python/백준 문제풀이
반응형

https://www.acmicpc.net/problem/2812

 

2812번: 크게 만들기

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

www.acmicpc.net

이 문제는 스택과 그리디 알고리즘을 섞은 문제다.

첫째 줄에 N과 K가 주어지고, 둘째 줄에는 N자리 숫자가 주어진다.

N자리 숫자에서 K개의 숫자를 지워서 가장 큰 수를 만드는 것이 이 문제다.

 

입력과 출력을 비교했을때 앞에 있는 작은 수들을 지워야 숫자가 커지는 것을 알 수가 있다.

나는 리스트를 하나 만들어서 숫자를 넣은 뒤, 뒤에 있는 숫자와 비교해서 더 작으면 제거하는 방식으로 접근했다.

코드와 함께 설명하겠다.

 

1
2
3
4
5
for n in mission_num:
    while stack and n > stack[-1] and mis > 0:
        stack.pop(-1)
        mis -= 1
    stack.append(n)
cs

mission_num은 N자리 숫자다.

while 반복문을 이용해서 stack이 존재하고  n이 스택의 마지막 숫자보다 크고 mis(지우는 숫자의 개수)가 0보다 클 때 스택에서 맨 마지막 숫자를 제거하고 지우는 숫자의 개수를 관리하는 변수의 크기를 1 줄였다.

그리고 while문과 관계없이 stack에 n을 추가하도록 했다.

 

정답코드:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import sys
input = sys.stdin.readline
 
num,minus_num = map(int,input().split())
mission_num = list(input())
stack = []
mis = minus_num
for n in mission_num:
    while stack and n > stack[-1] and mis > 0:
        stack.pop(-1)
        mis -= 1
    stack.append(n)
print(''.join(stack[:num-minus_num]))
cs
반응형
'Python/백준 문제풀이' 카테고리의 다른 글
  • 백준(G4) 3078번: 좋은 친구(파이썬, Python3)
  • 백준(G3) 2252번: 줄 세우기 (파이썬, Python3) + 위상정렬
  • 백준(G4) 1744번: 수 묶기 (파이썬,Python3)
  • 백준(G4) 1715번: 카드 정렬하기(파이썬, Python3)
코딩하는_대학생
코딩하는_대학생
Java Developer, Open Source Enthusiast, Proud Son
  • 코딩하는_대학생
    코딩하는 대학생에서 개발자까지
    코딩하는_대학생
  • 전체
    오늘
    어제
    • 분류 전체보기 (218)
      • 코딩하는 대학생의 책 추천 (8)
        • 클린코드 (5)
        • 헤드퍼스트 디자인패턴 (3)
      • Backend (8)
        • Spring (14)
        • AWS (3)
        • 회고 (4)
        • Redis (5)
        • 다양한 시각에서 바라본 백엔드 (3)
      • Python (35)
        • 개념 및 정리 (15)
        • 백준 문제풀이 (20)
      • JAVA (17)
        • 개념 및 정리 (14)
        • 백준 문제풀이 (2)
      • 왜? (7)
      • C언어 (42)
        • 개념 및 정리 (9)
        • 백준 문제풀이 (32)
      • 개인 공부 (27)
        • 대학 수학 (5)
        • 대학 영어 (10)
        • 시계열데이터 처리 및 분석 (5)
        • 컴퓨터 네트워크 (6)
        • 운영체제 (1)
      • 솔직 리뷰 (23)
        • 꿀팁 (6)
        • IT기기 (1)
        • 국내 여행 (7)
        • 맛집 (2)
        • 알바 리뷰 (2)
      • 대외활동 (17)
        • 체리피우미 3기 (4)
        • 꿀잠이들 6기 (13)
      • 음식 평가 (1)
      • 일상 & 근황 (2)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는_대학생
백준(G3) 2812번: 크게 만들기(파이썬, Python3)
상단으로

티스토리툴바