달달한 스토리

728x90
반응형

출처 핀터레스트

 

프로그래머스 입문자 시선으로 볼 때는

 

아직까지 비교적 쉬운 문제들이 마주하고 있다.

 

연습문제 느낌인데, 이런 거라도 풀면서 자신감도 늘리고,

 

코틀린 기능을 익히는 느낌으로 임하는 중이다.

 

첫 번째 문제는 파라미터로 입력받은 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의 초깃값으로 그대로

 

저장되고 반환까지 동시에 해버리는.. 효율적인 코드라고 할 수 있다.

 

 

문제도 풀고 다른 사람의 풀이를 보고 참조하자!

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading