프로그래밍/코딩테스트
[프로그래머스] 가장 긴 팰린드롬 / Swift
turu
2021. 6. 17. 01:19
[문제 보기]
더보기
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.
예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다.
제한사항
- 문자열 s의 길이 : 2,500 이하의 자연수
- 문자열 s는 알파벳 소문자로만 구성
입출력 예
s, answer"abcdcba" | 7 |
"abacde" | 3 |
입출력 예 설명
입출력 예 #1
4번째자리 'd'를 기준으로 문자열 s 전체가 팰린드롬이 되므로 7을 return합니다.
입출력 예 #2
2번째자리 'b'를 기준으로 "aba"가 팰린드롬이 되므로 3을 return합니다.
https://programmers.co.kr/learn/courses/30/lessons/12904
코딩테스트 연습 - 가장 긴 팰린드롬
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들
programmers.co.kr
부르트포스로 풀었는데 인덱스 설정하는 부분에서 너무 오래걸렸다.
이것도 다시 풀어봐야 할 문제로 추가함
import Foundation
func solution(_ s: String) -> Int {
let arr = Array(s)
var phase = arr.count
outer: while phase > 1 {
for i in (0...arr.count - phase) {
var size = 0
for j in (i..<i+phase/2) {
if arr[j] != arr[i + phase - 1 - (j - i)] {
break
}
size += 1
}
if size == phase/2 {
break outer
}
}
phase -= 1
}
return phase
}
반응형