-
[프로그래머스] 자연수 뒤집어 배열로 만들기 / KotlinProgrammers 2022. 2. 8. 14:33
https://programmers.co.kr/learn/courses/30/lessons/12932
코딩테스트 연습 - 자연수 뒤집어 배열로 만들기
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345
programmers.co.kr
문제
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건- n은 10,000,000,000이하인 자연수입니다.
n return 12345 [5,4,3,2,1]
초기 코드
class Solution { fun solution(n: Long): IntArray { var answer = intArrayOf() return answer } }
의식의 흐름
1. 일단 Long인 n을 String으로 만들고 뒤집고 자르고 다시 Int로.
2. n값이 100억이하이니 Int범위는 아니고 Long범위에 들어간다
해결 코드
class Solution { fun solution(n: Long): IntArray = n.toString().reversed().map { e -> e.toString().toInt() }.toIntArray() }
설명
1) n.toString() : 123 -> "123"
2) .reversed() : "123" -> "321"
3) .map {} : "321"를 List로 변환
4) .map { e -> e.toString().toInt() } : List<Int>를 만들건데 e가 "3" "2" "1" 이므로 이걸 그대로 아스키 코드로 변환하면 안됨 *
5) .toIntArray : IntArray로 변환
* "3", "2", "1"을 바로 아스키 코드로 변환하면 51, 52, 53이 되어버린다.
그래서 e.toInt()를 바로 하지 않고 toString()을 중간에 넣어주어야 함
toString()을 넣지 않으면 아래처럼 되어버린다... 5 자리에 53부터 나온다.
'Programmers' 카테고리의 다른 글
[프로그래머스] 정수 제곱근 판별 (2) 2022.02.08 [프로그래머스] 정수 내림차순으로 배치하기 / Kotlin (0) 2022.02.08 [프로그래머스] 자릿수 더하기 / Kotlin (0) 2022.02.08 [프로그래머스] 약수의 합 / Kotlin (0) 2022.02.08 [프로그래머스] 문자열을 정수로 바꾸기 / Kotlin (0) 2022.02.08