코딩테스트[파이썬]/입문자를 위한 코딩테스트 핵심

[스택과 큐] -Backspace

softmoca__ 2024. 1. 23. 14:25
목차

Backspace

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

화면에는 적어도 문자 한 개는 작성되어 있습니다.

 

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

 

 

나의 코드

def solution(s):
    answer = ""
    stack=[]
    for x in s:
        if x=='#':
            stack.pop()
        else:
            stack.append(x)

    return answer.join(map(str,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"))

스택의 기본 성질인 Last In Last Out을 사용하여 작성

 

정답 코드

def solution(s):
    stack = []
    for x in s:
        if x == '#':
            if len(stack) > 0:
                stack.pop()          
        else:
            stack.append(x)
    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"))

나의 코드와 거의 동일하나 위 문제의 입력 예제 뿐 아니라 초기에 #이 처음 들어오는 경우에 대한 

예외처리를 해주었다.