https://www.acmicpc.net/problem/25643
25643번: 문자열 탑 쌓기
인경이는 $N$개의 문자열을 쌓아서 문자열 탑을 완성하려고 한다. 탑을 완성하기 위해서는 모든 문자열을 아래에서부터 순서대로 쌓아 올려야 한다. 인경이는 문자열 탑의 꼭대기에 다음 순서의
www.acmicpc.net
난이도 : 브론즈 1
태그 : 문자열, 브루트포스 알고리즘
설명
붙어있는 칸이 완전히 같을때만 탑을 쌓을 수 있습니다.
두 문자열 abc, cab가 있을 때, 겹치게 놓는 방법은 총 5가지 입니다.
1. ab'c', 'c'ab
abc
cab
2. a'bc', 'ca'b
abc
cab
3. 'abc', 'cab'
acb
cab
4. 'ab'c, c'ab'
abc
cab
5. 'a'bc, ca'b'
abc
cab
즉, str1의 맨 끝과 str2의 맨 처음을 비교하고,
str의 맨 끝 두 문자, str2의 처음 두 문자를 비교하는 식으로 진행됩니다.
중간에 모든 문자열을 비교한 이후엔 반대로 진행하게 됩니다.
소스코드
n, m = map(int, input().split(" "))
str = []
for i in range(n):
str.append(input())
for i in range(n - 1):
str1 = str[i]
str2 = str[i + 1]
isAble = False
for j in range(1, m + 1):
if str1[m - j:] == str2[:j]:
isAble = True
break
if str1[:j] == str2[m - j:]:
isAble = True
break
if not isAble:
print(0)
exit(0)
print(1)
'코딩테스트 > Python' 카테고리의 다른 글
[백준 1427번] [Python] 소트인사이드 (0) | 2022.11.26 |
---|---|
[백준 23253번] [Python] 자료구조는 정말 최고야 (0) | 2022.11.18 |
[백준 25373번] [Python] 벼락치기 (0) | 2022.11.18 |
[백준 5566번] [Python] 주사위 게임 (0) | 2022.11.11 |
[백준 5211번] [Python] 가단조와 다장조 (0) | 2022.11.11 |