오늘의 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12903
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 코드
func solution(_ s:String) -> String {
return s.count % 2 == 0 ? String(Array(s)[s.count / 2 - 1...s.count / 2]) : String(Array(s)[s.count / 2])
}
Swift 에서는 String 의 길이를 알기 위해서, count 를 사용한다.
문제에서 가운데 글자를 추출해야 하므로, 먼저 Array(s)로 문자열을 배열로 바꾸고,
... 으로 배열의 범위를 설정한다. (단어의 길이가 짝수라면 가운데 두 글자를, 홀수라면 가운데 글자를 가져옴 - 삼항 조건 연산자 사용)
마지막으로 String 으로 변환하여 리턴.
다른 사람의 풀이
offsetBy 메소드는 시작 지점부터 떨어진 정수 값만큼을 더한 위치를 반환한다.
func solution(_ s:String) -> String {
let length = s.count
let startIndex = s.index(s.startIndex, offsetBy: (length - 1) / 2)
let endIndex = s.index(s.startIndex, offsetBy: length / 2)
return String(s[startIndex...endIndex])
}
가운데 문자를 추출하기 위해 startIndex, endIndex 를 정의하였다. 그리고 이 인덱스를 범위로 s 에서 추출하면, length 가 홀수, 짝수인 경우 모두 가운데 문자(들)을 추출할 수 있다.