[Algorithm] 프로그래머스 : 가운데 글자 가져오기

1Consumption·2020년 3월 1일
0

Algorithm

목록 보기
4/8

프로그래머스 lv1 가운데 글자 가져오기

코드

import Foundation

func solution(_ s:String) -> String {
    if s.count <= 2 {
        return s
    } else {
        return solution(String(s[s.index(after: s.startIndex)..<s.index(before: s.endIndex)]))
    }
}

풀이과정

문자열의 가운데 문자열을 반환하는 문제이다. 따라서 한글자 혹은 두글자의 문자열이 반환된다.

문자열의 처음 문자와 끝 문자를 제외하고 다시 solution 함수에 매개변수로 넘기며 다시 호출하는 재귀를 사용하였다.
따라서 처음과 끝을 제외하면서 계속해서 재귀호출을 하다, 문자열의 길이가 2이하가 되면 해당 문자열을 반환한다.

아쉬운 점

재귀의 경우 메모리를 많이 잡아먹기 때문에 재귀를 지양하는 것이 좋을 것 같다. 따라서 해당 알고리즘을 다음과 같이 해결할수도 있을 것 같다.

func solution(_ s:String) -> String {
    if s.count % 2 == 0 {
        return String(Array(s)[s.count / 2 - 1 ..< s.count / 2 + 1])
    } else {
        return String(Array(s)[s.count / 2])
    }
}

여기서 알게된 점은 String을 Array형태로 변경하면 index에 Int형을 넣어도 접근이 가능하다는 점이었다. 매우 유용하게 쓰일 듯 하다.

profile
개발자가되고싶어요

0개의 댓글