N° Studio logoHarutoStudio
사용 가이드글Premium
대시보드
사용 가이드글Premium
블로그/APCS Jan 2022 - h083
  • #apcs

APCS Jan 2022 - h083

BlackInkBlackInk2025년 6월 19일 오전 08:00
목차 APCS Jan 2022 - h083 Q3 [Python]
  1. APCS Jan 2022 - h083 Q3 [Python]
  2. 풀이 보고서
  3. 주요 포인트

APCS Jan 2022 - h083 Q3 [Python]

문제 설명:

점괘 통에는 M개의 막대가 있으며, 각 막대에는 영문 소문자로 된 문자열이 적혀 있습니다. 문자열 S와 T가 적힌 두 막대를 뽑아 이어 붙인 결과를 같은 내용의 앞뒤 절반으로 나눌 수 있으면 신이 동의한다는 길한 점괘인 성교(聖筊)로 봅니다. 그렇지 않으면 동의하지 않거나 응답하지 않은 것입니다. 예를 들어 piep와 ie를 붙인 piepie는 pie와 pie로 나뉘지만 foo와 bar는 조건을 만족하지 않습니다. S와 T가 조건을 만족하면 순서를 바꿔도 성립합니다. piepie와 iepiep 모두 같은 문자열 두 개로 나뉩니다. M개의 막대에서 조건을 만족하는 쌍은 몇 개일까요? 같은 두 막대의 조합은 한 번만 계산합니다.

m = int(input())
c = set()

for _ in range(m):
    c.add(input())


total = 0
for i in c:
    for idx in range((len(i) - 1 )//2):
        idx += 1
        if i[:idx] == i[-idx:] and i[idx:-idx] in c:
            total += 1

print(total)

풀이 보고서

  1. 집합의 각 문자열 i를 순회하며 인덱스 idx로 양 끝이 같은지 확인합니다.
  2. 양 끝이 같고 그 부분을 제거한 가운데 문자열도 집합 c에 있으면 유효한 쌍입니다.
  3. 쌍을 찾을 때마다 total에 1을 더합니다. 마지막으로 조건을 만족하는 쌍의 수인 total을 출력합니다.

주요 포인트

  1. 문자열 슬라이싱: abyyyab의 경우 문자열의 절반까지 순회하며 앞뒤를 비교합니다: if i[:idx] == i[-idx:].
  2. set() 검색: Python 내장 set()에 모든 문자열을 저장합니다. if i[idx:-idx] in c로 가운데 부분 역시 통에 있는 문자열인지 확인합니다.

핵심 개념:

  • 완전 탐색
  • HASH
  • SET

  • [✔️] 필요하면 코드를 그대로 사용해도 됩니다.
  • [✔️] 공유할 때 출처를 표시해 주세요.

image

이 글은 번체 중국어 원문을 AI로 번역했습니다. 의미나 표현에 차이가 있을 수 있으니 정확한 내용은 번체 중국어 원문을 기준으로 확인해 주세요.

목차

  1. APCS Jan 2022 - h083 Q3 [Python]
  2. 풀이 보고서
  3. 주요 포인트
HarutoStudio LogoHarutoStudio

HarutoStudio © 2023 - 2026

링크

  • 문서
  • 대시보드
  • 이용약관
  • 개인정보 처리방침
  • 환불 정책
  • 봇 상태

커뮤니티

  • Discord
  • Github
  • Instagram
  • top.gg

후원하기

  • Premium 요금제
  • 파트너