Tiny Bunny
본문 바로가기
Algorithm/Python

[SWEA #12393] 문자열 비교

by nowag 2024. 2. 5.

문제

두 개의 문자열 str1과 str2가 주어진다. 문자열 str2 안에 str1과 일치하는 부분이 있는지 찾는 프로그램을 만드시오.
예를 들어 두 개의 문자열이 다음과 같이 주어질 때, 첫 문자열이 두번째에 존재하면 1, 존재하지 않으면 0을 출력한다.

 

ABC

ZZZZZABCZZZZZ

두번째 문자열에 첫번째 문자열과 일치하는 부분이 있으므로 1을 출력.
 

ABC

ZZZZAZBCZZZZZ

문자열이 일치하지 않으므로 0을 출력.

 
 

입력

첫 줄에 테스트 케이스 개수 T가 주어진다.  (1≤T≤50)

다음 줄부터 테스트 케이스 별로 길이가 N인 문자열 str1과 길이가 M인 str2가 각각 다른 줄에 주어집니다.

(5≤N≤100, 10≤M≤1000, N≤M)

 

출력

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.

 

내가 쓴 코드 1

T = int(input())
for t in range(T):
    str1 = input()
    str2 = input()

    if str1 in str2:
        result = 1
    else:
        result = 0

    print(f'#{t+1} {result}')

 

내가 쓴 코드 2

def comp(pat, txt, M, N):
    for i in range(N - M + 1):
        for j in range(M):
            if txt[i+j] != pat[j]:
                break
        else:
            return 1
    return 0

T = int(input())
for t in range(T):
    str1 = input()   # pattern
    str2 = input()   # text
    m = len(str1)
    n = len(str2)

    ans = comp(str1, str2, m, n)
    print(f'#{t+1} {ans}')

이 코드는 다음 날 다르게 쓴 코드이다. 전날 썼던 if - in 을 쓰지 않고 Brute Force(고지식한 패턴 검색 알고리즘)을 이용하여 함수를 정의하고 풀어낸 코드이다. 

 

출력 결과

#1 1

#2 0

#3 1

 

제출 결과

pass

728x90
반응형

'Algorithm > Python' 카테고리의 다른 글

[BOJ #10809] 알파벳 찾기  (1) 2024.02.06
[BOJ #1152] 단어의 개수  (1) 2024.02.06
[SWEA #12395] 문자열_글자수  (0) 2024.02.05
[BOJ #2167] 2차원 배열의 합  (2) 2024.02.05
[BOJ #28445] 알록달록 앵무새  (2) 2024.02.05