View

728x90

오늘은 할 것

오늘은 간단하게 알고리즘 문제에 대해서 풀어보려고한다.


정수 내림차순으로 배치하기

문제는 주어진 정수를 내림 차순으로 바꿔서 Long타입으로 반환 해주면된다.


아래 문제 사진을 보자


일단 생각해보자 어떻게 하면 저 문제를 풀 수 있을까?


일단 생각 해야될 것은 반환 타입이 Long이라는 것이다. 하지만 내가 아는 선에서는 Long타입을 저렇게 그냥 바꿔주는 것은 없었던걸루 안다.
(있으면 댓글 좀..주세용.... 좋은건 같이써야지!!)
그렇다면 중간에 어떤 과정을 거쳐서 만들고 나중에 Long타입으로 타입변화을 하는게 맞다고 생각했다.(저 중간이라는 것이 핵심이다.)

그래서 저 중간에 어떤 과정을 거치는게 맞을까라고 여러 생각을 해봤다.
가장 단순하게는 해당 Long 값을 하나씩 잘라서 for문으로 비교를 해서 정렬을 해주고 반환 해주면 안될까라는 생각이 떠올랐다.
근데 글쓴이는 너무 코드양도 많고 오류가 나면 찾기도 힘들고 무엇보다 귀찮았다.
그래서 String()CharArray, sortedArrayDescending()함수를 쓰기로 했다.


아래 코드는 글쓴이의 정답코드이다.

class Solution {
    fun solution(n: Long): Long {
        return String(n.toString().toCharArray().sortedArrayDescending()).toLong()
    }
}

간단한 설명을 붙이자면
  • n을 toString()을 통해서 String올 타입변환 후
  • toCharArray()를 통한 문자 배열로 변환
  • sortedArrayDescending()함수를 통한 역순 정렬을 한것이다.
  • 그렇게 되면 해당 값은 CharArray형식으로 나온다.
  • 그리고 이것을 String()을 써서 문자열로 바꿔줬다.
  • 그러후 마지막으로 Long타입으로 형변환! 이러면 끝난다.

위에서 조금 힘들 수 있는 부분이라면 sortArrayDescending이라는 배열을 역순으로 정렬하는 함수와 문자배열을 String()으로 감싸 주 었던 부분일 것이다. 해당 부분만 잘 생각한다면 구지 for문을 돌려서 하는 로직을 스킵할 수도 있고 시간 복잡도도 줄어든다. 또한 구지 분필요한 오류를 낼 필요도 없으며 제일 중요한 점은 1줄이라는 것이다.(일단 보기가 좋다.ㅋㅅㅋ)

'TIL' 카테고리의 다른 글

두 정수 사이의 합(알고리즘)  (0) 2024.03.12
개발자 하루  (2) 2024.03.11
문자열을 정수로 바꾸기(알고리즘)  (0) 2024.03.05
코틀린 for문 사용 예제  (0) 2024.03.04
RecyclerView  (2) 2024.02.28
Share Link
reply
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30