내 풀이
func solution(_ s:String) -> String {
let middleIdx = s.count / 2
// middleIdx : 문자열 s의 가운데 index를 계산해서 저장
var result = ""
if s.count % 2 == 1 {
// 문자열이 홀 수 인 경우,
result = "\(s[s.index(s.startIndex, offsetBy: middleIdx)])"
} else {
// 문자열이 짝수인 경우,
result = "\(s[s.index(s.startIndex, offsetBy: middleIdx-1)])" + "\(s[s.index(s.startIndex, offsetBy: middleIdx)])"
}
return result
}
- middleIdx변수를 선언하여 문자열 s의 가운데 인덱스 계산
- result 변수를 빈 문자열로 초기화
- 주어진 문자열의 길이가 홀수인지 짝수인지 확인
홀수일 경우: 문자열의 가운데 글자를 가져와 result에 저장
짝수일 경우: 가운데 두 글자를 가져와 result에 저장
자세히 살펴보자면,
"\(s[s.index(s.startIndex, offsetBy: middleIdx-1)])"
+ "\(s[s.index(s.startIndex, offsetBy: middleIdx)])"
- "\( )"
문자를 문자열로 변환
- s[index]
문자열 s에서 특정 인덱스에 해당하는 문자를 가져오고, 이때 위에서 계산한 가운데 인덱스를 사용하여 해당 위치의 문자를 가져옴
- s.startIndex
문자열 s의 시작 인덱스, 시작 인덱스는 첫 번째 글자를 가리킴
- s.index(s.startIndex, offsetBy: middleIdx)
startIndex에서 middleIdx만큼 떨어진 새로운 인덱스를 생성
즉, 가운데 인덱스에 해당하는 위치를 알 수 있음
- s.index(s.startIndex, offsetBy: middleIdx - 1)
startIndex에서 middleIdx - 1만큼 떨어진 새로운 인덱스를 생성, 이는 가운데 인덱스의 직전 위치를 나타냄
' 𝗔𝗣𝗣𝗟𝗘 > ALGORITHM' 카테고리의 다른 글
[내일배움캠프] 데일리 루틴(iOS_3회차) - 내적 (0) | 2024.02.17 |
---|---|
[내일배움캠프] 데일리 루틴(iOS_3회차) - 수박수박수박수박수박수? (0) | 2024.02.16 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 제일 작은 수 제거하기 (0) | 2024.02.13 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 없는 숫자 더하기 (0) | 2024.02.12 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 핸드폰 번호 가리기 (0) | 2024.02.11 |