Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 방명록 만들기
- Database
- 네이버 인턴
- 메모리 포랜식
- JSTL
- 행정지역 DB
- 소프트웨어 개발보안 경진대회
- 인턴 지원
- 소개딩
- PyAmdecoder
- 동읍면 DB
- riceteacatpanda
- mysql
- 3단계 지역 DB
- Forensic 절차
- 정보보호병 후기
- restapi
- 인턴 후기
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- react
- spring
- Layered Architecture
- DBMS
- EER
- jsp
- frontend
- reversing.kr
- Django
- webhacking 처음
- SessionAttribute
Archives
- Today
- Total
웹찢남
[백준 9935 문자열 폭발 문제] PYTHON 본문

어려운 문제는 아닌데 너무 어렵게 푼 문제입니다..
우선 다른 사람들의 풀이를 보는걸 추천합니다 ㅎ..
문제는 우선 stack을 사용하며 풀었고 for문으로 문자열을 돌리며
폭발 문자열의 인자를 첫번째부터 마지막까지 돌며 같을 경우 stack에 넣는다.
여기서 체크해야할 점은 2가지인데 만약 C4가 폭발문자열인데 CC44일경우
폭발 문자열의 첫번째 index가 두번 반복된다 그래서 따로 처리를 해줘야 한다.
다음으로 신경써야할 부분은 연속된 폭발 문자열이 나오다가 다른 문자가 나오면
stack에 있는 문자열을 답에 추가해야한다.
그렇게 하면 다음과 같은 코드가 나온다.
A = input()
B = input()
answer = []
sstack = []
sstacknum = []
blen = len(B)
snum = 0
for word in A:
if B[snum] == word:
snum += 1
sstacknum.append(snum)
sstack += word
elif B[0] == word:
snum = 1
sstacknum.append(snum)
sstack += word
else:
answer += sstack
answer += word
sstack = []
sstacknum = []
snum = 0
if snum == blen:
while sstack:
if ''.join(sstack[-blen:]) == B:
del sstack[-blen:]
del sstacknum[-blen:]
try:
snum = sstacknum[-1]
except:
snum = 0
else:
break
if answer:
print(''.join(answer+sstack))
else:
print("FRULA")
Comments