https://school.programmers.co.kr/learn/courses/30/lessons/120839
문제
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return 하도록 solution 함수를 완성해 보세요.
제한사항
0 < rsp의 길이 ≤ 100
rsp와 길이가 같은 문자열을 return 합니다.
rsp는 숫자 0, 2, 5로 이루어져 있습니다.
풀이
class Solution1 {
fun solution(rsp: String): String {
return buildString {
rsp.forEach { char ->
when (char) {
'0' -> append(5)
'2' -> append(0)
'5' -> append(2)
}
}
}
}
}
class Solution2 {
fun solution(rsp: String): String {
val arr = IntArray(6)
arr[0] = 5
arr[2] = 0
arr[5] = 2
return buildString {
rsp.forEach {
append(arr[it-'0'])
}
}
}
}
- 해당문제를 2가지 경우로 풀어보았습니다.
- 1번 같은 경우 조건문을 이용하여 문자열을 만들었습니다.
- 2번 같은 경우 배열을 만들어서 해당값에 맞는 값을 넣어서 문자열을 만들었습니다.
- 2가지 모두 장점은 있습니다. 1번같은경우 명시적으로 보여 가독성이 좋아 보입니다. 그렇지만 매번 조건문으로 값을 접근하기 때문에 값의 길이가 길면 길수록 값에 접근하는 시간은 더욱 길어질 것입니다. 그에 비해 2번 풀이의 경우 매번 배열에 접근하여 값을 가져오기 때문에 1번 풀이보다 조금 더 빨리 가져올 수 있습니다. 그렇지만 rsp의 0,2,5 말고 다른 값을 받는 다면 stackOverFlow를 발생하기 때문에 이렇게 배열로 문제를 풀 때는 조심해야 합니다.
결과
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 최댓값 만들기 (1) (Kotlin) (0) | 2023.07.26 |
---|---|
[프로그래머스] - 점의 위치 구하기 (Kotlin) (0) | 2023.07.25 |
[프로그래머스] - 문자열 뒤집기 (Kotlin) (0) | 2023.07.25 |
[프로그래머스] - 배열 뒤집기 (Kotlin) (0) | 2023.07.25 |
[프로그래머스] - 배열 두배 만들기 (Kotlin) (0) | 2023.07.24 |