문자열 s의 길이가 짝수인지 홀수인지 구분해서 짝수면 길이를 2로 나눈 몫에 해당하는 인덱스로, 홀수면 길이를 2로 나눈 몫에서 1을 뺀 인덱스와 몫에 해당하는 인덱스를 반환하게 했다.
그런데 문자열에서 인덱스로 요소를 가져오니까 타입이 Char으로 추론이 되어서 강제로 String으로 변환시켜주어야 했다.
class Solution {
fun solution(s: String): String {
var answer: String = ""
var a = s.length
if(a %2 ==0){
answer = s[a/2-1].toString() + s[a/2].toString()
} else {
answer = s[a/2].toString()
}
return answer
}
}
다른 사람 풀이
class Solution {
fun solution(s: String) =
with(s) { substring(length / 2 - 1 + (length % 2) .. length / 2) }
}
전혀 모르겠다. with 은 어떻게 쓰는거고 substring은 무슨 역할인지
.substring( a .. b)
문자열의 a번째부터 b번째 전까지 자르기 (until -1 사용이랑 똑같다)
1 . qwer
answer = "qwer".substring(4/2 - 1 + (4%2) .. 4/2)
answer = "qwer".substring( 1 .. 2 )
answer = "we"
2. abcde
answer = "abcde".substring(5/2 -1 + (5%2) .. 5/2)
answer = "abcde".substring(1.5 .. 2)
answer = "c"
with(receiver) {}
receiver 로 객체를 입력받으면 it 이나 this 등의 키워드 없이도 객체의 속성을 참조하거나 변경할 수 있다.
여러 번 호출할 필요가 있을 때 그룹핑하는 용도!
with 을 사용하지 않는다면 아래와 같다.
class Solution {
fun solution(s: String) =
s.substring((s.length / 2 - 1) + (s.length % 2) .. (s.length / 2))
}
다른 사람 풀이 2
class Solution {
fun solution(s: String) = s.slice(((s.length - 1) / 2)..(s.length / 2))
}
.slice(a ..b)
원하는 구간만 잘라서 새롭게 반환하고 싶을 때 사용! 원본 변경 X
'코딩테스트' 카테고리의 다른 글
프로그래머스 | 내적 | Kotlin (1) | 2024.01.04 |
---|---|
프로그래머스 | 수박수박수박수 | Kotlin (1) | 2024.01.03 |
프로그래머스 | 없는 숫자 더하기 (0) | 2023.12.28 |
프로그래머스 | 핸드폰 번호 가리기 (1) | 2023.12.27 |
프로그래머스 | 음양 더하기 (0) | 2023.12.26 |