2024. 3. 7. 10:46, ๐กAlgorithm
๋ฐ์ํ
๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/12933
์ ๊ทผ
- ์ฒ์์ ๊ทธ๋ฅ ๋ฐ๋๋ก ๋์ดํ๋ ๋ฌธ์ ์ธ์ง ์๊ณ ๋ช ์ด๋ง์ ์๋ชป ํ์๋ค.
- ์ ์ํ์ ๋ฐ์ String์ผ๋ก ๋ฐ๊พธ๊ณ reversed ์์ผ์ค ๋ค, ๋ค์ ์ ์ํ์ผ๋ก ๋ฐํ์์ผฐ๋ค.
// ์๋ชป๋ ๋ฌธ์ ์ดํด๋ก ํผ ์ฝ๋
class Solution {
fun solution(n: Long): Long {
var answer = n.toString().reversed()
return answer.toLong()
}
}
- ๋น์ฐํ ๊ฒฐ๊ด๊ฐ์ด ์ ๋ต๊ณผ ์ผ์นํ์ง ์์๊ณ , ์๊ณ ๋ณด๋ ํฐ ๊ฐ๋ถํฐ ์ ๋ ฌํด์ผ ํ๋ ๋ฌธ์ ์๋ค.
- Array๋ List์ n์ ์๋ผ ํ๋์ฉ ๋ฃ์ด๋๊ณ maxOrNull()์ ์ด์ฉํด ํฐ ์ซ์๋ถํฐ ๊บผ๋ด๋ ๊ฑด ์ด๋จ๊น ์๊ฐํ๋ค.
// ๊ตฌ์
class Solution {
fun solution(n: Long): Long {
var answerList = mutableListOf<Long>()
var numList : LongArray = n.toString()
.split("")
.filter { it != "" }
.map { it.toLong() }
.toLongArray()
if(numList.size != 0){
answerList.add(numList.maxorNull())
}
else{
์์์๋ถํฐ ํ๋์ฉ ๋นผ๊ธฐ
}
}
}
- ๊ทธ๋ฐ๋ฐ ๋ณด๋๊น sort ๊ณ์ด์ ๋ฐฐ์ด ํจ์๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ ๊ฒ ๋ณต์กํ๊ฒ ์ํ๊ณ ํธํ๊ฒ ๋ต์ ๋์ถํ ์ ์์ ๊ฒ ๊ฐ์๋ค.
- ์๋์ ๊ฐ์ด ์ฑ๊ณตํ๋ค.
์ฑ๊ณต ์ฝ๋
// ํต๊ณผ, ๋๋ฆฐ ์ฝ๋
class Solution {
fun solution(n: Long): Long {
var numList : LongArray = n.toString()
.split("")
.filter { it != "" }
.map { it.toLong() }
.toLongArray()
numList.sortDescending()
return numList.joinToString("").toLong()
}
}
์ค๋ช
- numList์ n์ string์ผ๋ก ํ๋ณํํ๊ณ , ํ๊ธ์์ฉ ์ชผ๊ฐ ์ ์ฅํ๊ณ , ๊ฐ๊ฐ์ ์์๋ฅผ Long์ผ๋ก ๋ค์ ํ๋ณํํ๋ค LongArray๋ก ๋ง๋ค์ด์ฃผ์๋ค.
- ๊ทธ๋ ๊ฒ ๋ง๋ค์ด์ง numList๋ฅผ sortDescending() ํจ์๋ฅผ ํตํด ์์ฒด์ ์ผ๋ก ๋ด๋ฆผ์ฐจ์ ๋ฐฐ์ด ํ๋ค.
- ์ํ๋ ์์๋๋ก ๋ง๋ค์ด์ง numList์ ์์๋ค์ ํ๋์ ๊ธ์๋ก ํฉ์ณ์ผ ํ๋ joinToString("")์ ์ฌ์ฉํ๋ค.
- ํจ์์ ๋ฐํ๊ฐ์ ๋ง๊ฒ Long์ผ๋ก ํ๋ณํํ์ฌ ๋ฆฌํดํ๋ค.
- ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์๋๋ผ ์คํ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
๐ก์๋ณธ ๋ฐฐ์ด ์ ๋ ฌ
- sort() ์๋ณธ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
- sortDescending() ์๋ณธ ๋ฐฐ์ด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
๐ก ์ ๋ ฌ๋ ์๋ก์ด ๋ฐฐ์ด ๋ฐํ (์๋ณธ ๋ฐฐ์ด์ ๊ทธ๋๋ก)
- sortedArray() ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ
- sortedArrayDescending() ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ
๋ค๋ฅธ ๋ฐฉ๋ฒ
class Solution {
fun solution(n: Long): Long {
var answer = 0L
answer = n.toString()
.toCharArray()
.sorted()
.reversed()
.joinToString("")
.toLong()
return answer
}
}
- ๋ฐ๋ก ์ฒ์๋ถํฐ Array๋ก ๋ง๋ค์ง ์๊ณ , answer๋ผ๋ ๋ณ์ ์์์ Array๋ก ๋ณํํ๋ค๊ฐ ๋ค์ Long์ผ๋ก ๋ณํํ ์ ์์๋ค.
- ์ด ๊ฒฝ์ฐ CharArray๋ฅผ ๋ฐ๋ก ์ ๋ ฌํ๊ธฐ์, sortDescending์ ์์ฉํ์ง ์๋๋ค.
class Solution {
fun solution(n: Long): Long = String(n.toString().toCharArray().sortedArrayDescending()).toLong()
}
- ์ ์ผ ๊ฐ๋จํด๋ณด์ด๋ ๋ฐฉ๋ฒ์ด๋ค. joinToString("")์ ์ฐ์ง ์๊ณ , ๋ฐ๋ก String์ผ๋ก ๋ด๋ณด๋๋ค๊ฐ Long์ผ๋ก ํ๋ณํํ๋ค.
- ํ๊ท ํ ์คํธ ์คํ์๋ 13ms๋ก ๊ฐ์ฅ ํจ์จ์ ์ด์๋ค.
๋ฐ์ํ
๐ฌ C O M M E N T