본문 바로가기
Kotlin/Programmers Algorithm

[프로그래머스 - 코틀린] 자연수 뒤집어 배열로 만들기 #12932

by eun.24k 2023. 10. 21.

#12932

🎄 Question ?

https://school.programmers.co.kr/learn/courses/30/lessons/12932

class Solution {
    fun solution(s: String): Int {
        var answer = 0
        return answer
    }
}

🧩 Thought Process

  1. 각 숫자를 배열로 바꾸기
    - CharArray로 바꾸기
  2. 이 문제도 mutableList로 바꾸어 주기 (리스트 수정을 위해)
  3. 배열의 순서를 뒤바꾸기

 

🎀 Answer

풀이 #1 (내 풀이)

class Solution {
    fun solution(n: Long): Array<Int> {
        var answer = intArrayOf()
        val list: MutableList<Int> = answer.toMutableList()
        var nString = n.toString()
        var nCharArray = nString.toCharArray()
        var arraySize = nCharArray.size
        for (i in 0 until arraySize) {
            list.add(nCharArray[arraySize-1-i].digitToInt())
        }
        return list.toTypedArray()
    }
}

풀이 #2

 class Solution {
 	fun solution(n: Long): IntArray {
    	var answer = intArrayOf()
        
        n.toString().map {
        	answer += (it.toInt() - '0'.toInt())
        }
        
        return answer
    }
}

https://velog.io/@nayeon/Array%EC%9D%98-map-filter-reduce-forEach-%EB%A9%94%EC%86%8C%EB%93%9C

맵은 컬렉션에 있는 맵이 아니고 함수이다. 앞에 있는 배열의 값을 it이라는 값에 대입해서 계산해주는 함수라고 보면 될거 같다.

it.toInt()에서 '0'.toInt()를 왜 빼주는 건지 이해가 되지 않았었는데 팀 멤버분께서 친절히 설명해 주셨다

3을 출력하고 싶으면 3의 아스키코드값에서 0의 아스키 코드값을 빼주면 3이 나오게 된다!

풀이 #3

class Solution {
    fun solution(n: Long): IntArray =
        n.toString().reversed().map { it.toString().toInt() }.toIntArray()
}

얘는 toString를통해 charArray로 바뀐 배열의 앞뒤 순서를 바꾸어주고 매핑을 해주는 것 같다. 여기서는 왜 아스키코드를 고려하지 않을까... (이건 나중에 또 확인해봐야겠다.)

🎁 Result

 

 

🏆 Comment

https://dailycoding24k.tistory.com/27

https://dailycoding24k.tistory.com/21

위 두 문제에서 공부한 내용을 종합적으로 이용해서 문제 풀이를 했다. 다른 풀이도 고민해 볼 필요가 있는 것 같다.