가운데글자 가져오기

LEEHAKJIN-VV·2022년 5월 16일
0

프로그래머스

목록 보기
3/37

출처: 프로그래머스 코딩 테스트 연습

문제 설명

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

제한 사항

  • s는 길이가 1 이상, 100이하인 스트링입니다.

입출력 예

sreturn
"abcde""c"
"qwer""we"

내가 제출한 코드

func solution(_ s:String) -> String {
    let len: Int = s.count
    if len==1 {
        return s
    }
    let odd = s.index(s.startIndex, offsetBy: len/2)
    let even = s.index(s.startIndex, offsetBy: (len/2)-1)
    var result: Substring = ""
    
    result = len%2==0 ? s[even...odd] : s[odd...odd]
    return String(result)
}

코드 설명

  1. 우선 길이가 1인 경우 가운데 글자는 자기 자신이므로 자신을 반환한다.
  2. 이 문제는 2가지 케이스로 나뉘는데, 문자열의 길이가 홀수인경우 가운데 문자를 반환하고, 짝수인 경우 (길이/2, 길이/2 -1) 범위의 문자열을 반환한다.
  3. 각 케이스를 위한 상수 odd(홀수), even(짝수)를 선언한다.
  4. 삼항연산자(?)을 사용하여 짝수인 경우 (길이/2 -1, 길이/2)의 범위를 가지는 문자열을 result에 할당하고 홀수인 경우 가운데 문자를 반환한다.
  5. 이떄 s[odd...odd]는 odd의 인덱스에 해당하는 위치의 값을 반환한다.
  6. Index타입으로 문자열을 subscript한 경우 반환 값은 Substring 타입이다. 그러므로 String으로 타입 변환을 하였다.

0개의 댓글