| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- CS
- java
- 객체지향
- BOJ
- spring security
- 문자열
- Junit5
- 스프링 시큐리티
- Deadlock
- Python
- Spring
- OS
- 자바
- 스프링
- test
- proxy
- 프록시
- 모던 자바 인 액션
- 최소 신장 트리
- 알고리즘
- 운영체제
- 모던자바
- 리플렉션
- 파이썬
- Reflection
- MST
- 백준
- redis
- 약수
- 다이나믹 프록시
Archives
- Today
- Total
Dev 달팽이 @_''
[파이썬] 백준 9935번 : 문자열 폭발 본문
출처 : www.acmicpc.net/problem/9935
9935번: 문자열 폭발
첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모
www.acmicpc.net
처음 접근은 폭발 문자열을 입력받은 문자열에서 찾고 있으면 슬라이싱을 통하여 폭발 문자열을 빼고 다시 문자열을 만들고 없으면 반복문을 빠져나가는 방법을 선택하였다. 그러나 역시 시간 초과 .. 그래서 다른 사람들의 접근 방법을 조금 참고하였다.
참고 코드 : mytodays.tistory.com/23
이 분의 접근 방법은 stack을 이용하는 방법이다.
먼저, 스택에 문자열을 한 글자씩 넣어주고 stack의 top 문자와 폭발 문자열의 끝 문자가 같으면 stack에서 폭발 문자열의 길이만큼의 문자열을 폭발 문자열과 비교해준다.
그 둘이 같다면 stack에서 해당 부분을 pop해주고 위의 방법을 반복한다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import sys
s = sys.stdin.readline().strip('\n')
c = sys.stdin.readline().strip('\n')
stack = []
for i in s:
stack.append(i)
if i == c[-1]:
if ''.join(stack[-len(c):]) == c:
del stack[-len(c):]
answer = ''.join(stack)
if answer == '':
print('FRULA')
else:
print(answer)
|
cs |
'PS > Python' 카테고리의 다른 글
| [파이썬] 백준 1037 번 : 약수 (0) | 2021.02.17 |
|---|---|
| [파이썬] 백준 4375 번 : 1 (0) | 2021.02.17 |
| [파이썬] 백준 2902번 : KMP는 왜 KMP일까? (0) | 2021.02.05 |
| [파이썬] 백준 1100번 : 하얀 칸 (0) | 2021.02.05 |
| [파이썬] 백준 2743번 : 단어 길이 재기 (0) | 2021.02.05 |