반응형
5555
https://www.acmicpc.net/problem/5555
[정답]
1
2
3
4
5
6
7
8
9
10
11
12
|
import sys
s = sys.stdin.readline().strip()
N = int(sys.stdin.readline())
cnt = 0
for n in range(N):
a = sys.stdin.readline().strip()
for i in range(10):
a = a[1:] + a[0]
if s in a:
cnt += 1
break
print(cnt)
|
cs |
.
.
.
[풀이]
반지에 적혀있는 문자열이기에 순환이 가능하다.
따라서 a = a[1:] + a[0]로 문자열 첫글자를 제일 뒤로 계속 보내준다.
이렇게 푸는 것이 문제의 의도일 것이다.
하지만 간단한 방법이 있었다.
문자열을 두번 써서 순환하는 경우까지 한번에 계산하는 것이다.
1
2
3
4
5
6
|
for n in range(N):
a = sys.stdin.readline().strip()
a *= 2
if s in a:
cnt += 1
print(cnt)
|
cs |
p.s.
생각을 유연하게 하자.
반응형
'백준 문제풀이' 카테고리의 다른 글
[백준 18310] 파이썬 : 안테나 (0) | 2021.10.09 |
---|---|
[백준 15654] 파이썬 : N과 M (5) (0) | 2021.10.09 |
[백준 11652] 파이썬 : 카드 (2) | 2021.10.08 |
[백준 1049] 파이썬 : 기타줄 (0) | 2021.10.07 |
[백준 4796] 파이썬 : 캠핑 (0) | 2021.10.04 |