반응형

5555

https://www.acmicpc.net/problem/5555

 

5555번: 반지

당신은 N개의 반지를 가지고 있다. 각각의 반지는 대문자 10 문자로 이루어진 문자열이 새겨져 있다. 반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다. 반지에 각인된 문자열을

www.acmicpc.net

[정답]

1
2
3
4
5
6
7
8
9
10
11
12
import sys
= sys.stdin.readline().strip()
= 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.

생각을 유연하게 하자.

반응형

+ Recent posts