본문 바로가기

알고리즘

[코딩테스트] Level. 1 가운데 글자 가져오기

728x90

문제 설명

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

재한사항
  • s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
"abcde" "c"
"qwer" "we"

 

substring 풀이법

// 문자열 길이를 2로 나눈다.
// 홀수일 경우 1을 더하고 아닐 경우 0을 더하는 방식
// 짝수일 경우는 .. 앞의 인덱스 숫자와 뒤의 인덱스 숫자가 다르기 때문에 2개가 반환되고 
// 홀수일 경우는 .. 앞의 인덱스 숫자와 뒤의 인덱스 숫자가 같기 때문에 1개가 반환된다.
   s.substring((s.length -1) / 2 .. s.length / 2)

 

substring 이란? 

String의 인덱스 자리를 정해서 그 인덱스 포함 문자열 부터 자르는 함수. 

 

/*    substring 예시
val str = "abcdefghijklmn"
val subString1 = str.substring(0 until 5)  str 문자열의 0번째부터 5번째 전까지의 문자열 자르기
val subString2 = str.substring(5) startIndex(5번째)에서 시작하여 문자열 끝까지 자르기
val subString3 = str.substring(5, 9) startIndex(5번째)부터 시작하여 endIndex(9번째) 전까지
*/

 

 

slice 풀이법 

 

s.slice((s.length - 1) / 2..s.length / 2) // slice 를 활용하는 방법

 

slice 도 마찬가지로 문자열을 자르는 함수이다. 

 

 

그러나 차이점이 있다 slice 는 다음과 같이도 활용될 수 있다. 

val numbers = listOf("one", "two", "three", "four", "five", "six")    
println(numbers.slice(1..3))
println(numbers.slice(0..4 step 2))
println(numbers.slice(setOf(3, 5, 0)))

// output:
// [two, three, four]
// [one, three, five]
// [four, six, one]

 

이 둘의 차이점을 알고 사용하자!