🗒 문제


📝 나의 문제풀이
class Solution {
fun solution(my_string: String, num1: Int, num2: Int): String {
val chars = my_string.toCharArray()
val current = chars[num1]
chars[num1] = chars[num2]
chars[num2] = current
return chars.joinToString("")
}
}
📝 다른 사람의 문제 풀이
다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.
import java.util.*
class Solution {
fun solution(myString: String, num1: Int, num2: Int): String {
return myString.toList().let {
Collections.swap(it, num1, num2)
it.joinToString("")
}
}
}
🖊 문제 풀이 시 알면 좋을 것
Collections.swap
리스트에서 두 인덱스의 값을 서로 바꿔주는 함수
왜 쓰나?
- 직접 임시 변수를 만들지 않고
- 리스트 요소 교환을 한 줄로 처리하고 싶을 때
import java.util.Collections
val list = mutableListOf('a', 'b', 'c')
Collections.swap(list, 0, 2)
println(list) // [c, b, a]
concatToString()
CharArray를 바로 String으로 바꿔주는 함수
val chars = charArrayOf('a', 'b', 'c')
val result = chars.concatToString()
println(result) // "abc"
joinToString("")이랑 뭐가 달라?
| 항목 | concatToString | joinToString("") |
| 대상 | CharArray 전용 | 모든 컬렉션 |
| 중간 객체 | 없음 | 있음 |
| 의도 | 문자 배열 → 문자열 | 요소들을 이어붙임 |
| 가독성 | 👍 명확 | 보통 |
*표에서 말하는 중간 객체는 StringBuilder를 뜻함
중간 객체 비교에 대해 더 자세히 설명하자면
joinToString("") — 중간 객체 있음
val chars = charArrayOf('a', 'b', 'c')
val result = chars.joinToString("")
내부에서 벌어지는 일 (개념)
- 각 Char를 하나씩 꺼냄
- Char → String으로 변환
- StringBuilder 생성 ← 중간 객체
- 문자열을 하나씩 append
- 최종 String 생성
👉 StringBuilder가 중간 객체
concatToString() — 중간 객체 없음
val chars = charArrayOf('a', 'b', 'c')
val result = chars.concatToString()
내부에서 벌어지는 일 (개념)
- CharArray 길이만큼 한 번에
- 바로 String 생성
👉 과정용 객체를 만들지 않음
내부적으로는 뭐가 다른데?
- concatToString() → CharArray 전용 최적화
- joinToString("") → 제네릭 처리 → 약간 더 무거움
StringBuilder란?
문자열을 계속 이어 붙일 수 있는, 가변(mutable) 문자열 객체
val sb = StringBuilder()
sb.append("a")
sb.append("b")
sb.append("c")
val result = sb.toString()
- StringBuilder = 가변 문자열 컨테이너
- String은 불변 → 붙일수록 새 객체 생성
- StringBuilder는 하나의 객체로 계속 append
- joinToString 같은 함수 내부에서 자동으로 사용됨
- CharArray → String 변환에는
👉 concatToString()이 더 직접적
반응형
'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 대문자와 소문자 (0) | 2025.12.21 |
|---|---|
| [프로그래머스] 숫자 찾기 (0) | 2025.12.21 |
| [프로그래머스] 암호 해독 (0) | 2025.12.21 |
| [프로그래머스] 문자열 정렬하기 (1) (0) | 2025.12.21 |
| [프로그래머스] 제곱수 판별하기 (0) | 2025.12.19 |