개발일지

2023.12.26 TIL

과일바구니♡ 2023. 12. 26. 21:04

1. 배운 내용

  1) 알고리즘코드카타

     자연수를 뒤집어 배열만들기

 

문제

문제 설명

자연수 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 } }

 

문제는 읽었지만, 이걸 어떻게 자연수를 만들고, 배열을 한다는 건지 모르겠다.  무엇이 들어가야 할지 모르겠어서, 그대로 에러를 냈다.

그리고 답을 보았다.

class Solution {
    fun solution(n: Long): IntArray {
        return n.toString().reversed().map { it.toString().toInt() }.toIntArray()
    }
}

 

이걸 봐서는 아무것도 모르겠다. 그래서 구글에 검색했다.

의식의 흐름

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()을 중간에 넣어주어야 함

 

찾은 블로그에서 본 내용이다. 자세하게 나온 부분인데, 나는 의식의 흐름부터 모르겠어서 구글을 검색했다.

 코틀린 Int의 범위에 대해 알아보았다.

일단 100억 이하니 long에 들어간다는 내용은 lnt에 저장안되니 바꾼다는 걸까? 저장범위에 대해서는 처음보는것 같다.

 생소하게 찾아본 시간이였다. 아직 모르겠다.

 

2) 강의 듣고 인텔리제이아이디어에서 따라침.

    멘붕이 터졌던 1-13까지 인테리제이아이디어에서 따라쳤다.

    에러난 부분은 여러가지 시도를 해보고, 튜터님께 가서 물어보았다. 그리고 나머지 강의들은 들었다.(1-17)

    오늘까지 한 부분까지 깃 허브에 올려서, 맥북에어에 다운받아 삼성노트북에서 맥북에어 노트북에 두었다.

   맥북에어 노트북 사용법과 타자연습을 틈틈히 하려고 한다. 

 

 

 

'개발일지' 카테고리의 다른 글

2023.12.28 TIL  (0) 2023.12.28
2023.12.27 TIL  (0) 2023.12.27
2023.12.22 TIL  (1) 2023.12.22
2023.12.21 TIL  (0) 2023.12.21
2023.12.20 TIL  (0) 2023.12.20