알고리즘 CODEKATA 30 (가운데 글자 가져오기)

오리너구리·2024년 6월 6일
0

CODEKATA

목록 보기
29/57
post-thumbnail

문제 설명

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


재한사항

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

내 풀이

최종코드

푸는데 걸린시간 17분

class Solution {
    fun solution(s: String): String {

        var count = s.count()
        
        return if(count % 2 == 0){
            s.substring((count/2)-1,(count/2)+1)
        }else {
            s.substring(count/2,(count/2)+1)
        }
    }
}

s 의 길이가 짝수면 가운데 2글자를 반환하고 s의 길이가 홀수면 가운데 1글자만 반환해야하니까

일단 s의 길이를 세야해서 count라는 변수에 s의 개수를 넣어줬당.

그리고 만약에 글자개수가 짝수면, substring을 사용해서 두글자를 반환하기위해

count/2 -1 인덱스 에서 -1이랑 count/2 에서 +1 인덱스의 글자를 반환하게 했음

count/2 에 -1과 +1을 한이유는 인덱스는 0부터 시작이기때문에 -1을 해야했고, substring이 적은 인덱스-1 만큼을 반환하기 때문에 +1을 해줘야했음~


다른 사람 풀이

class Solution {
  fun solution(s: String) =
    with(s) { substring(length / 2 - 1 + (length % 2) .. length / 2) }
}
  • 따로 변수를 더 만들지 않고 length로도 처리 할 수 있었다고한당
  • with() 함수는 처음보는디 찾아봐야할듯..? → 처음 보지않았다 scope 함수에 있는애였는데.. scope 함수 한번 정리하긴했는데 정확히 이해못했어서 초면인줄.
  • substring은 똑같이 썼는데 substring내에서 + 도 사용할 수 있는가봄~~
  • if 문을 사용하는 대신 처음 인덱스에 length/2 -1 을 한거에 짝수면 그대로 홀수는 +1 을 해주는걸로 간결하게 표현했당

오늘 배운 것

  1. substring 사용하는 방법
profile
오리너구리입니다

0개의 댓글