jujuwon
시크릿주주
jujuwon
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • 🔠 프로그래밍언어 (35)
      • ☕️ Java (19)
      • 🐠 Python (15)
      • 🍠 Kotlin (1)
    • 🔙 Backend (16)
      • 🌿 Springboot (12)
      • 🐳 Docker (1)
      • ☁️ AWS (3)
    • 💼 CS (12)
      • 📶 Network (12)
    • 🕹 알고리즘 (14)
      • 📑 스터디 (2)
      • 💁🏻‍♂️ 백준 (9)
      • 👨🏼‍🔬 프로그래머스 (3)
    • 📚 Book (8)
      • 🔎 오브젝트 (4)
      • 🧪 TDD (2)
      • 📜 논문 (2)
    • 🔐 보안 (7)
      • 👾 Pwnable (7)
    • 📝 회고 (4)
    • 🧩 etc. (10)
      • ⚠️ issue (2)
      • 💡 꿀팁 (7)
      • ✏️ 끄적 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

hELLO · Designed By 정상우.
jujuwon
🕹 알고리즘/💁🏻‍♂️ 백준

백준 :: 1254번 팰린드롬 만들기 (Python)

백준 :: 1254번 팰린드롬 만들기 (Python)
🕹 알고리즘/💁🏻‍♂️ 백준

백준 :: 1254번 팰린드롬 만들기 (Python)

2023. 5. 23. 14:18
반응형

문제 링크

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

 

1254번: 팰린드롬 만들기

동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는

www.acmicpc.net

문제 캡쳐

접근 방식

앞에서부터 읽나 뒤에서부터 읽나 똑같은 문자열를을 팰린드롬이라고 하고,

최소한의 문자를 추가해서 팰린드롬으로 만드려고 할 때 그 길이를 출력하는 문제입니다.

먼저 가장 최선의 경우와 최악의 경우를 먼저 떠올려 봤는데

최선의 경우는 이미 팰린드롬이기 때문에 하나도 붙이지 않아도 되는 경우,

최악의 경우는 주어진 문자열만큼을 뒤집어서 뒤에 덧붙여줘야 하는 경우였습니다.

예를 들어 최선의 경우는 abba, 최악의 경우는 abcd 가 있습니다.

만약 주어진 문자열 중간에 팰린드롬 조건을 만족하는 문자열이 존재한다면,

그 이전 문자만큼을 뒤집어서 뒤에 붙여주면 팰린드롬이 되는 형태였습니다.

예를 들어 bcabba 가 주어졌다고 치면, “bc” | “abba” 로 나누었을 때 “abba” 는 팰린드롬 !

따라서 “bc” 를 뒤집어 “abba” 의 뒤에 붙여준다면 “bcabbacb” 가 되어 팰린드롬이 되고

이 경우가 가장 짧은 팰린드롬 길이가 될 것입니다.

그렇다면 문자열을 앞에서부터 0개, 1개, 2개 … 를 기준으로 짤라나가면서,

몇번째에서 팰린드롬을 만족하면 되는지 확인하면 됩니다.

풀이 코드

import sys

def input():
    return sys.stdin.readline().rstrip()

S = input()

answer = len(S)
for i in range(len(S)):
    tmp = S[i:]
    flag = True
    for j in range(len(tmp) // 2):
        if tmp[j] != tmp[len(tmp) - j - 1]:
            flag = False
            break
    if flag:
        answer += i
        break

print(answer)

 

끝.

728x90
반응형
저작자표시 (새창열림)
  • 문제 링크
  • 문제 캡쳐
  • 접근 방식
  • 풀이 코드
'🕹 알고리즘/💁🏻‍♂️ 백준' 카테고리의 다른 글
  • 백준 :: 7570번 줄 세우기 (Python)
  • 백준 :: 1213번 팰린드롬 만들기 (Python)
  • 백준 :: 1202번 보석 도둑 (Python)
  • 백준 :: 1541번 잃어버린 괄호 (Python)
jujuwon
jujuwon

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.