기록

백준_9935_문자열 폭발 본문

코딩테스트/python

백준_9935_문자열 폭발

youngyin 2020. 9. 2. 10:00

문제

 

9935번: 문자열 폭발

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

www.acmicpc.net

풀이

  1. 입력 문자열 w를 배열 ans에 넣는다.
  2. 마지막으로 넣은 문자가 패턴 p의 마지막 문자와 같고 ans의 크기가 p의 크기보다 크다면
  3. 패턴 p의 마지막 문자부터 ans를 검사한다.
  4. 검사 결과가 true일때 패턴 p의 길이만큼 ans.pop()

ans에 저장된 문자들을 join연산으로 붙여서 프린트한다. ans의 크기가 p의 크기를 비교하는 조건이 없으면, 뒤에서부터 문자열을 검사하는 코드에서 ans의 길이가 p보다 작을때 인덱스를 벗어나는 에러가 발생한다. 

코드

w = input()
p = input()
ans = list()
for i in range(len(w)) :
    ans.append(w[i])

    # ans의 마지막 값과 p의 마지막 값이 같으면
    if ans[-1]==p[-1] and len(ans)>=len(p):
        check = True

        # 뒤에서 부터 검사
        for k in range(1, len(p)+1) :
            if ans[-k] != p[-k] :
                check = False #하나라도 다르면 false
                break

        # 검사 결과가 true일때 p 길이만큼 pop
        if check :
            for k in range(len(p)) :
                ans.pop()

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

'코딩테스트 > python' 카테고리의 다른 글

백준_1085_직사각형에서 탈출  (0) 2020.12.28
백준_1259_팰린드롬수  (0) 2020.12.28
백준_17144_미세먼지 안녕!  (0) 2020.08.29
백준_1786_찾기  (0) 2020.08.29
백준_1016_제곱ㄴㄴ수  (0) 2020.08.28
Comments