[Python] 백준/BOJ 5555번: 반지 (Silver 5)

2025. 1. 29. 10:00·Algorithm/백준 (BOJ)

💻 Problem

문제 보러 가기

 

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

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

 

✏️ Solution 1

import sys
input = sys.stdin.readline

find = input().rstrip()
n = int(input())
length = len(find)
cnt = 0

for _ in range(n):
    ring = input().rstrip()

    for i in range(len(ring)):
        target = ''

        if i > len(ring) - length:
            target = ring[i:] + ring[:(i + length) % len(ring)]
        else:
            target = ring[i:i + length]

        if find == target:
            cnt += 1
            break

print(cnt)

보이는 그대로 직관적으로 풀었다.

index를 하나씩 살펴가며 find 문자열을 찾았고, 만약 target이 반지 길이를 넘어가게 되면 두 문자열을 따로 계산한 후 합쳤다.

target과 find가 일치하면 해당 반지는 탐색을 종료했다.

 

✏️ Solution 2

import sys
input = sys.stdin.readline

find = input().rstrip()
n = int(input())
cnt = 0

for _ in range(n):
    ring = input().rstrip()
    if find in ring * 2:
        cnt += 1

print(cnt)

다른 사람들 풀이를 보니 이렇게 풀 수도 있었다..

반지가 두 배라면 반지의 시작과 끝이 연결된 형태라는 점을 고려하지 않아도 된다.

그저 find 문자열이 반지 * 2 안에 존재하는지 if문 하나만 작성하면 된다.

반응형

'Algorithm > 백준 (BOJ)' 카테고리의 다른 글

[Python] 백준/BOJ 7576번: 토마토 (Gold 5)  (0) 2025.02.01
[Python] 백준/BOJ 1012번: 유기농 배추 (Silver 2)  (0) 2025.01.31
[Python] 백준/BOJ 28913번: 최애의 팀원 (Silver 3)  (0) 2025.01.28
[Python] 백준/BOJ 23757번: 아이들과 선물 상자 (Silver 2)  (0) 2025.01.27
'Algorithm/백준 (BOJ)' 카테고리의 다른 글
  • [Python] 백준/BOJ 7576번: 토마토 (Gold 5)
  • [Python] 백준/BOJ 1012번: 유기농 배추 (Silver 2)
  • [Python] 백준/BOJ 28913번: 최애의 팀원 (Silver 3)
  • [Python] 백준/BOJ 23757번: 아이들과 선물 상자 (Silver 2)
올콩
올콩
콩 심은 데 콩 난다
  • 올콩
    콩스토리
    올콩
  • 전체
    오늘
    어제
    • 분류 전체보기 (145) N
      • SSAFY (10)
      • Algorithm (71)
        • 이론 (5)
        • 백준 (BOJ) (65)
        • 프로그래머스 (1)
      • Language (9)
        • JavaScript (0)
        • TypeScript (0)
        • Java (9)
        • Python (0)
      • Library & Runtime (15)
        • React (13)
        • Node.js (2)
      • Framework (9)
        • 이론 (2)
        • Next.js (3)
        • Vue (4)
      • DevOps (3)
        • Git (3)
      • WEB (18) N
        • HTML (9)
        • error (7) N
        • etc (2)
      • Computer (5)
        • 자격증 (2)
        • tip (2)
        • etc (1)
      • CS (5)
        • Network (1)
        • Blockchain (4)
  • 블로그 메뉴

    • GitHub
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    딕셔너리
    블록체인
    오블완
    SSAFYcial
    자바
    Error
    강의
    렌더링최적화
    vue
    싸피
    React
    누적합
    SSAFY
    dfs
    티스토리챌린지
    백준
    github
    kakaomap
    bfs
    재귀
    파이썬
    알고리즘
    Next.js
    해시
    우선순위큐
    DP
    html5
    Java
    카카오맵
    Algorithm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
올콩
[Python] 백준/BOJ 5555번: 반지 (Silver 5)
상단으로

티스토리툴바