[PCCP] 스택(Stack) - Backspace | 파이썬

SangJin Ham·2023년 6월 28일
0
post-thumbnail

코딩테스트 역량 강화 교육(거점형 특화 프로그램)이라는 프로그램에 참여해 공부한 내용입니다.


스택(Stack) - Backspace

앞서 공부한 스택을 사용해 Backspace 문제를 풀어보겠다.


문제

현수는 주어진 문자열의 문자 순서대로 키보드 자판의 문자를 쳐 화면에 s문자열을 작성합니다.
문자열에는 '#'문자가 있는데 이 문자는 Backspace키를 의미합니다.
매개변수 s에 현수가 키보드 자판을 쳐야할 순서인 문자열이 주어지면 현수가 s문자열을 작성했을 때 최종적으로 화면에 작성된 문자열을 반환하는 프로그램을 작성하세요.
화면에는 적어도 문자 한 개는 작성되어 있습니다.


입출력 예

sanswer
"abc##ec#ab""aeab"
"kefd#ef##s##""ke"
"teac#cher##er""teacher"
"englitk##shabcde##ff##ef##ashe####""englishabc"
"itistime####gold""itisgold"

제한사항

  • 문자열 s의 길이는 1,000을 넘지 않습니다.

코드

def solution(s):
    stack = []

    for char in s:
        if char != '#':
            stack.append(char)
        else:
            if len(stack) > 0:
                stack.pop()

    return "".join(stack)
    
print(solution("#abc##ec#ab"))
print(solution("kefd#ef##s##"))
print(solution("teac#cher##er"))
print(solution("englitk##shabcde##ff##ef##ashe####"))
print(solution("itistime####gold"))

풀이

  1. s에서 문자를 하나 받아 만약 #
    • 아닌 경우 : char를 stack에 삽입
    • 맞는 경우 : stack이 비어있지 않을 때만 가장 마지막 문자 삭제
  2. 그렇게 모든 문자를 다 돌면 join문을 이용해 stack을 return
profile
끄적끄적

0개의 댓글