[1254] 펠린드롬 만들기

RudinP·2023년 9월 23일
0

BaekJoon

목록 보기
74/77

문제

생각

aabb가 있다고 하자
맨앞을 제외한 substring은 abb다.
그 다음은 bb이다.
bb는 펠린드롬이 맞다.
추가적으로 삭제된 aa만 붙이면 된다.
이는 즉, 삭제했던 횟수만큼 길이에 더하면 정답이다.

  1. 앞부분을 서서히 제외하는 substring을 펠린드롬인지 확인
  2. 펠린드롬이 아니라면 정답으로 출력할 수를 1 증가
  3. 펠린드롬이 되었다면 입력된 string의 길이 + 정답 출력

코드

import Foundation

extension String {
    func substring(from: Int, to: Int) -> String {
        guard from < count, to >= 0, to - from >= 0 else {
            return ""
        }
        
        // Index 값 획득
        let startIndex = index(self.startIndex, offsetBy: from)
        let endIndex = index(self.startIndex, offsetBy: to + 1) // '+1'이 있는 이유: endIndex는 문자열의 마지막 그 다음을 가리키기 때문
        
        // 파싱
        return String(self[startIndex ..< endIndex])
    }
}

func isPalindrome(_ line : String)->Bool{
    return line == String(line.reversed())
}

let input = readLine()!
var ans = input.count

for i in 0..<input.count{
    if(isPalindrome(input.substring(from:i, to:input.count - 1))){
        break
    }
    ans += 1
}

print(ans)

substring 출처
다음에는 swift만의 기능으로 substring과 같은 결과를 낼 수 있도록 해봐야겠다 ㅡ,.ㅡ

profile
iOS 개발자가 되기 위한 스터디룸...

0개의 댓글