문제
친구가 적은 성민이는 수업에 결석해도 시험이나 과제에 대한 정보를 제대로 얻을 수 없었다. F 학점을 받을 위기까지 아슬아슬하게 결석일 수를 유지하던 성민이는, 어느 날 갑자기 영문도 모른 채 쪽지시험을 보게 되었다!
갑작스러운 쪽지 시험으로 마음이 급해진 성민이는 매직아이를 사용해 벼락치기를 하기로 한다.
성민이가 듣는 과목의 교과서는, 알파벳 소문자(a-z)와 알파벳 대문자(A-Z)로만 이루어져 있다. 성민이가 교과서에서 찾고자 하는 키워드도 역시 알파벳 소문자와 대문자로만 이루어져 있다. 하지만, 성민이에겐 큰 문제가 생겼다. 결석한 날의 수업 내용을 친구에게 빌려 필기를 하던 중, 교과서에 숫자(0-9)를 적어버린 것이다.
키워드를 찾기 힘들어 패닉에 빠진 성민이는 몇 안 되는 친구인 당신에게 도움을 요청했다. 성민이를 도와, 교과서에서 성민이가 찾고자 하는 키워드의 존재 여부를 알려주자.
입력
첫 번째 줄에는 알파벳 소문자, 대문자, 숫자로 이루어진 문자열 S가 주어진다. (1 ≤ |S| ≤ 200,000) 두 번째 줄에는 성민이가 찾고자 하는 알파벳 소문자, 대문자로만 이루어진 키워드 문자열 K가 주어진다. (1 ≤ |K| ≤ 200,000)
단, 입력으로 들어오는 키워드 문자열 K의 길이는, 교과서의 문자열 S보다 짧거나 같다.
출력
첫 번째 줄에 성민이가 찾고자 하는 키워드가 교과서 내에 존재하면 1, 존재하지 않으면 0을 출력한다.
예제 입력 1 복사
1q2w3e4r5t6y
qwerty
예제 출력 1 복사
1
"1q2w3e4r5t6y" 라는 문자열에서 "qwerty"라는 문자열을 찾을 수 있다.
> 2,4,6,8,10,12번째의 q,w,e,r,t,y를 보면 존재한다는 것을 알 수 있다.
예제 입력 2 복사
1ovey0uS2
veS
예제 출력 2 복사
0
정답
1. 알파벳인지 검사
2. 알파벳인 경우는 스트링으로 만들기
3. 만들어진 문자열 스트링안에 찾는 문자가 있는지 확인
import sys
sys.stdin = open("3_1_20220820_백준_2589_보물섬.txt", "r")
s = input()
find = input()
def solution(s, find) :
alphaStr = ""
for i in range(len(s)) :
if s[i].isalpha() is False :
continue
else :
alphaStr += s[i]
if find in alphaStr :
return 1
else :
return 0
print(solution(s, find))
시간초과
import sys
sys.stdin = open("3_1_20220820_백준_2589_보물섬.txt", "r")
s = input()
find = input()
def solution(s, find) :
stack = []
for i in range(len(s)) :
if s[i].isalpha() is True :
stack.append(s[i])
for i in range(len(stack)-len(find)+1) :
if "".join(stack[i:i+len(find)]) == find:
return 1
return 0
print(solution(s, find))
'코테풀이 > 문자열' 카테고리의 다른 글
[백준 | 실버2] 14426번: 접두사 찾기(문자열, 브루트포스) (0) | 2022.08.25 |
---|---|
[파이썬] 공통 접두사를 찾아라(문자열, 접두사) (0) | 2022.08.25 |
[백준 | 실버4] 2870 : 수학숙제 (0) | 2022.08.10 |
[프로그래머스 | 2단계] 가장 큰 수(문자열 정렬) (0) | 2022.04.12 |
[랩스 | 문자열] 문자열 압축(반복문, 완전탐색) (0) | 2022.04.11 |