출처 핀터레스트
프로그래머스 입문자 시선으로 볼 때는
아직까지 비교적 쉬운 문제들이 마주하고 있다.
연습문제 느낌인데, 이런 거라도 풀면서 자신감도 늘리고,
코틀린 기능을 익히는 느낌으로 임하는 중이다.
첫 번째 문제는 파라미터로 입력받은 long타입에 수를 내림차순으로 반환하는 문제이다.
정수 내림차순으로 배치하기
class PlacingIntegersInDescendingOrder {
fun solution (n: Long ) : Long =
n.toString()
.toCharArray()
.sortedDescending()
.joinToString("" )
.toLong()
}
이 문제 같은 경우는 전달받은 long값을 문자열로 변환하고,
정렬을 위해 char 배열로 변환해준다.
그리고 내림차순 정렬 메서드인 sortedDescending()을 써준다.
그 후 배열을 스트링으로 바꿔주는 joinString()를 사용해주고,
분리 기호를 없애주기 위해 separator인자 값을 "" 빈 값으로 주고,
마지막으로 long 타입으로 바꾸어 반환한다.
문자열을 정수로 바꾸기
class ConvertStringToInteger {
fun solution (s: String ) : Int = s.toInt()
}
이 문제는 설명을 생략한다...
역시 연습문제가 맞는듯하다..
x만큼 간격이 있는 n개의 숫자
class NNumbersSpacedByX {
fun solution (x: Int , n: Int ) : LongArray = LongArray(n) { x.toLong() * (it + 1 ) }
}
이 문제는 처음에는 아래와 같이 풀었다.
fun main () {
var x = 2
val n = 5
var sum = x.toLong()
val plus = x
val arr = LongArray(n)
for (index in 0 until n) {
arr[index] = sum
sum += plus
}
print(arr.map { it.toString() })
}
이렇게도 답이 나왔지만,
다른 사람들의 풀이를 보니, 위에 코드 한 줄로 간단명료하게 끝내는 걸보고..
한 수 배웠다는 생각이 든다.
우선
LongArray에 처음 초깃값을 주고,
그 뒤에 블록으로 감싸주면, LongArray의 사이즈만큼의 Int 값이,
it으로 전달된다.
그 값을 파라미터로 받은 x값의 곱해주어, LongArray의 초깃값으로 그대로
저장되고 반환까지 동시에 해버리는.. 효율적인 코드라고 할 수 있다.
문제도 풀고 다른 사람의 풀이를 보고 참조하자!