함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
# 제한 조건
n은 1이상 8000000000 이하인 자연수입니다.
#입출력 예
ex) n = 118372, return = 873211
# 풀이
class Solution {
fun solution(n: Long): Long =
n.toString().toCharArray().sortedDescending().joinToString("").toLong()
}
n = 118372 라고 했을때 얘를 toString()을 사용해서 문자열로 바꿔준뒤,
toCharArray()를 사용해서 문자열을 한글자씩 분리해준다 ( toCharArray() 는 문자열을 한글자씩 분리해주는 역할, toList도 같은 역할을 함)
그런다음 sortedDescending()을 통해 내림차순으로 정렬해준뒤
joinToString("")을 사용해서 공백없이 연결된 873211문자열을 만들어준다
마지막으로 toLong()으로 Long타입으로 되돌려준다
118372 -> "118372" -> [1,1,8,3,7,2] -> [8,7,3,2,1,1] -> 873211
# toCharArray() , toList()
문자열을 한글자씩 분리시켜줌
# sorted()
리스트를 오름차순으로 정렬 (데이터 변경이 안되는 리스트 정렬)
# sort()
리스트를 오름차순으로 정렬 (데이터 변경이 가능한 리스트 정렬)
# sortedDescending()
리스트를 내림차순으로 정렬
# sortedWith()
문자 길이순서대로 정렬
# joinToString("")
separator에 "" 을 주면 공백없이 연결
# 다른 사람의 풀이
class Solution {
fun solution(n: Long): Long {
var answer = 0L
answer = n.toString()
.toCharArray()
.sorted()
.reversed()
.joinToString("")
.toLong()
return answer
}
}
-> sorted()를 통해 리스트를 오름차순으로 정렬한뒤, reversed()를 사용해서 그걸 뒤집었다
class Solution
{
fun solution(n: Long): Long
{
var answer = ""
var nList = n.toString().split("").toMutableList()
nList.sort()
nList.reverse()
for (element in nList)
{
answer += element
}
return answer.toLong()
}
}
split("")는 ""를 기준으로 문자열을 쪼개주는것!
n = 118372
"118372 " -> ""을 기준으로 숫자를 1,1,8,3,7,2로 쪼갠다음 toMutableList로 리스트 안에 넣어주고
sort와 reverse를 사용해서 정렬한뒤 뒤집어준다. [8,7,3,2,1,1] 이 nList에 들어갈것이다
nList의 값을 element에 하나씩 집어넣으면서 for문을 돈다. answer = answer+element
element = 8, answer = "8"
element = 7, answer = "7"
element = 3, answer = "3"
element = 2, answer = "2"
element = 1, answer = "1"
-> [8,7,3,2,1]
마지막으로 toLong()으로 Long타입으로 되돌려주면 87321이 나올것이다
class Solution {
fun solution(n: Long): Long {
val numArray = n.toString().toCharArray().sortedArray().reversedArray()
var str : String = ""
numArray.forEach { ch -> str+=ch }
return str.toLong()
}
}
'개발 노트 > 알고리즘[Kotlin]' 카테고리의 다른 글
프로그래머스 알고리즘 문제[두 정수 사이의 합] (0) | 2024.03.22 |
---|---|
프로그래머스 알고리즘 문제[하샤드 수] (2) | 2024.03.19 |
프로그래머스 알고리즘 문제[정수 제곱근 판별] (0) | 2024.03.14 |
프로그래머스 알고리즘 문제[문자열을 정수로 바꾸기] (0) | 2024.03.11 |
프로그래머스 알고리즘 문제[자연수 뒤집어 배열로 만들기] (0) | 2024.03.08 |