본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 문자열 겹쳐쓰기 JAVA Kotlin

by Bhinney 2023. 12. 4.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


❓ 문제

문자열 my_stringoverwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.


제한사항
  • my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
  • 1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000
  • 0 ≤ s ≤ my_string의 길이 - overwrite_string의 길이

📎 예시

my_string overwrite_string s result
"He11oWor1d" "lloWorl" 2 "HelloWorld"
"Program29b8UYP" "merS123" 7 "ProgrammerS123"

 


✍🏻 JAVA

  • 주어진 문자열 my_string을 s까지 자르고, 겹쳐 쓸 문자열 overwrite_string을 이어 ans에 할당해주었다.
  • ans에 주어진 문자열 my_string을 ans 길이 다음부터 잘라 이어준 값을 리턴시켰다.
public String solution(String my_string, String overwrite_string, int s) {
   String ans = my_string.substring(0, s) + overwrite_string;

   return ans + my_string.substring(ans.length());
}

✍🏻 내가 처음 푼 Kotlin

  • JAVA의 코드를 비슷하게 코틀린에 옮겼다.
  • my_string을 s까지 자르고, 겹쳐 쓸 문자열 overwrite_string을 이어준 후 my_string을 s와 overwrite_string길이를 더한 값 부터 잘라서 이어주었다.
fun solution(my_string: String, overwrite_string: String, s: Int): String
    = my_string.substring(0, s) + overwrite_string + my_string.substring(s + overwrite_string.length)

 

✍🏻 다른 풀이를 참고해서 푼 Kotlin

  • replaceRange()라는 함수가 있는 것을 알게 되었다.
@kotlin.internal.InlineOnly
public inline fun String.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): String =
    (this as CharSequence).replaceRange(startIndex, endIndex, replacement).toString()

 

  • 해당 함수를 이용해 my_string의 s부터 s에 overwrite_string 길이를 더한 값까지의 문자열을 overwrite_string으로 바꿔주었다.
fun solution(my_string: String, overwrite_string: String, s: Int): String
     = my_string.replaceRange(s, s + overwrite_string.length, overwrite_string)

 

댓글