내 풀이
class Solution {
fun solution(n: Long): ArrayList<Int> {
var answer = arrayListOf<Int>()
var x = n
while(x > 0){
var a :Int = (x % 10).toInt()
answer.add(a)
x /= 10
}
return answer
}
}
다른 사람 풀이
class Solution {
fun solution(n: Long): IntArray {
return n.toString().reversed().map { it.toString().toInt() }.toIntArray()
}
}
처음 보는 것들이 나왔다.
.reversed()
.map{}
: 각 원소를 원하는 형태로 변환해서 새 컬렉션을 만든다.
n.toString().reversed()
.map 함수를 적용하고 type을 확인해보았다.
arryList 로, 그 안에는 '12345'가 각각 하나의 원소로 나뉘어져 들어가있다.
요구사항대로 IntArray로 만들기 위해 toInt 를 적용해보았는데 안된다.
map 안의 it 은 기본적으로 Char 타입이라고 한다.
이 Char 타입을 Int 로 바로 변환시킬 수 없는 이유
: Char 은 기본적으로 UTF-16 으로 인코딩 되고 숫자로 변환될 때(ex.toInt()) 해당 코드에 해당하는 숫자로 디코딩된다.
*UTF : 유니코드라는 문자 집합을 UTF라는 문자열 인코딩 규칙으로 변경 사람의 언어 <-> 기계의 언어
UTf-8 : 8bit를 사용 UTF-16 : 16bit를 사용
현재 인터넷에서 가장 많이 쓰이는 UTF-8로 UTF-16 으로 인코딩 되는 Char 을 숫자로 변환하니
위와 같이 출력된다.
그러므로 Char 타입인 map 안의 원소들을 String 으로 변환시킨 다음 Int 로 변환시키고
요구사항에 맞도록 toIntArray 해준다.
'코딩테스트' 카테고리의 다른 글
프로그래머스 정수 내림차순으로 배치하기 (0) | 2023.12.19 |
---|---|
프로그래머스 정수 제곱근 판별 (0) | 2023.12.18 |
프로그래머스 x만큼 간격이 n개의 숫자 (0) | 2023.12.14 |
프로그래머스 나머지가 1이 되는 수 찾기 (0) | 2023.12.13 |
프로그래머스 약수의 합 (0) | 2023.12.12 |