[goormlevel] 부분 팰린드롬 문자열

J. Hwang·2024년 7월 4일
0

coding test

목록 보기
6/108

문제

부분 문자열(Substring)이란 하나의 문자열 내에 존재하는 연속된 문자로 구성된 문자열을 말한다. 예를 들어서 문자열 'abcd'에는 'a', 'b', 'c', 'd', 'ab', 'bc', 'cd', 'abc', 'bcd', 'abcd'와 같은 부분 문자열이 존재한다. 어떤 문자열의 부분 문자열은 자기 자신을 포함한다.
어떤 문자열 S가 주어졌을 때, S의 부분 문자열들 중 가장 긴 팰린드롬(회문, Palindrome)의 길이를 출력하는 프로그램을 작성하시오. 팰린드롬이란 각 원소들의 순서를 뒤집어도 동일한 문자열을 나타낸다.
다음의 예시를 보자. 문자열 S가 'levelup'일 때, 팰린드롬이 되는 부분 문자열은 'l', 'e', 'v', 'u', 'p', 'eve', 'level'이 있다. 이들 중 가장 긴 부분 문자열은 'level'이 되므로 이 때의 정답은 5가 된다.


입력

입력으로 하나의 문자열 S가 주어진다.

  • 문자열은 1글자 이상, 1,000글자 이하다.
  • 문자열은 알파벳 소문자로만 구성되어 있다.

내 풀이

def number_of_palindrome(string1):
	substring = []
	for i in range(0, len(string1)+1):
		for j in range(0, len(string1)+1):
			substring.append(string1[i:j])
	substring = list(set(substring))
	substring.remove('')
	
	palindrome = []
	for i in substring:
		if i[::-1] == i:
			palindrome.append(i)
		else:
			pass
	
	lenlist = [len(x) for x in palindrome]
	
	return max(lenlist)

input1 = input()

print(number_of_palindrome(input1))

코멘트

  • point 1 : substring을 어떻게 구할 것인가
  • point 2 : 회문을 어떻게 판단할 것인가 \rarr string[::-1]을 하면 문자열이 뒤집힌다.

References

https://level.goorm.io/

profile
Let it code

0개의 댓글