just inside

[백준] Silver 5. 5555 - 반지 python 본문

coding test/완전탐색

[백준] Silver 5. 5555 - 반지 python

방울도마도 2024. 7. 8. 17:33
728x90

문제 링크

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


문제 설명

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

찾고자하는 문자열이 주어졌을 때 그 문자열을 포함하는 반지가 몇 개인지를 발견하는 프로그램을 작성하라.

 

입력

입력은 총 2 + N 줄 이다.

첫 번째 줄에는 1 자 이상 10 자 이하의 대문자로 구성된 찾고자 하는 문자열이 적혀있다.

두 번째 줄에는 반지의 개수 N (1 ≦ N ≦ 100)이 적혀있다.

2+i 줄(1 ≦ i ≦ N)엔 i개의 반지에 새겨져있고, 10 문자로 이루어진 문자열이 적혀있다.

 

출력

찾고자하는 문자열을 포함 반지의 개수를 나타내는 정수를 한 줄로 출력하라.


제출 코드

import sys

input = sys.stdin.readline

obj = input().rstrip()
n = int(input().rstrip())
result = 0

# in 함수로 문자열 포함 여부 확인
for _ in range(n):
    check = input().rstrip()
    if obj in check*2:
        result += 1

print(result)

 

풀이

  • 반지는 문자열의 시작과 끝이 연결된 형태로 되어있으므로, 입력받은 문자열인 check에 2를 곱해 연결된 형태로 만들어준다.
  • 포함여부를 확인하고자 하는 문자열인 obj가 check*2에 포함되어 있는지는 조건문에 in을 사용하여 확인한다.
    • 포함되어 있다면 result += 1

 

알아둘 사항

  • 반지의 양끝이 연결되어 있다는 것을 간과하지 말 것
728x90