-
[프로그래머스] 가장 긴 팰린드롬 / Swift프로그래밍/코딩테스트 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
부르트포스로 풀었는데 인덱스 설정하는 부분에서 너무 오래걸렸다.
이것도 다시 풀어봐야 할 문제로 추가함
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 }
반응형'프로그래밍 > 코딩테스트' 카테고리의 다른 글
[1926번] 그림 / Swift (0) 2021.06.20 [2020 카카오 인턴십] 경주로 건설 / Swift (0) 2021.06.17 [프로그래머스] 베스트앨범 / Swift (0) 2021.06.17 [프로그래머스] 여행경로 / Swift (0) 2021.06.16 [프로그래머스] 단어 변환 / Swift (0) 2021.06.16