코딩테스트

[백준][Python] 9935 문자열 폭발

yeeejji 2024. 3. 24. 21:41
728x90

자료구조, 문자열, 스택 / 골드 4

💣

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

 

9935번: 문자열 폭발

첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모

www.acmicpc.net

 

 

정답 코드

string = input()
explosion = input()
ans = []
last_char = explosion[-1]

for i in string:
    ans.append(i)
    if i == last_char and ''.join(ans[-len(explosion):]) == explosion:
        del ans[-len(explosion):]

if len(ans) == 0:
    print("FRULA")
else:
    print(''.join(ans))

 

스택을 사용해서 풀면 된다.

주어진 문자열을 돌면서, 스택(ans)에 추가한다.

이때, 폭발 문자열의 끝 값과 동일한 문자를 발견했다면, 폭발 문자열의 길이만큼 스택에서 꺼내서 검사한다.

일치하는 경우 스택에서 삭제한다.

 

 

✂️ 리스트에서 요소를 삭제하고 싶다면? ✂️

 

1. del 키워드

리스트에서 특정 인덱스에 있는 요소나 슬라이스를 삭제

my_list = [1, 2, 3, 4, 5]
del my_list[1:3]  # 인덱스 1부터 2까지의 요소를 삭제
# 슬라이스도 삭제 가능!

 

 

2. remove()

리스트에서 특정 값을 가진 첫 번째 요소를 삭제

my_list = [1, 2, 3, 4, 5]
my_list.remove(3)  # 값이 3인 첫 번째 요소 삭제

 


3. pop()

리스트에서 특정 인덱스에 있는 요소를 삭제하고 해당 값을 반환

my_list = [1, 2, 3, 4, 5]
popped_value = my_list.pop(2)  # 인덱스 2에 있는 요소 삭제하고 반환

 

 

🙀 어려웠던 점

 

나는 replace() 함수를 사용해서 문제를 풀었는데, 시간 초과가 발생했다.

(이렇게 쉽게 풀릴 것 같지 않았긴 했음 ^^)

 

잘 모르겠어서 구글링으로 찾아봤다. 보면 이해되는데 혼자 풀어보라 하면 못 풀겠는 뭐 그런,,, 넵

분발하자 *^^*

 

 

 🫧 새롭게 알게 된 것

 

del 키워드!!