개발일지

2024.01.30 TIL

과일바구니♡ 2024. 1. 30. 21:00

1. 배운내용

    1)알고리즘 코드카타 

 

class Solution {
    fun solution(n: Int): Int {
        return n.toString(3).reversed().toInt(3)
    }
}
import kotlin.math.pow

class Solution {
    fun solution(n: Int): Int {
        var buffer: String = n.toString(3)
        var answer: Int = 0

        buffer.forEachIndexed { index, c ->
            answer += (c.toString().toIntOrNull()!!) * 3.toDouble().pow(index).toInt()
        }

        return answer
    }
}

 

문제를 풀며 알게된 것 

[IntType].toString(3) 을 하면 3진법으로 바꾸어준다.

[StringType].toInt(10) 을 하면 10진법으로 바꾸어준다.

 

------------------------------------------------------------풀이-------------------------------------------------------
1. 정수를 3진법으로 변환하는 방법은 3으로 나눠가며 나머지를 n번째 자리에 채워가는 것 입니다. 
ex) 15 -> 17/3 = 5, 2 (몫, 나머지)
              5/3 = 1, 2
              1/3 = 0, 1  => 1 2 2 ( 3진법) => (1*9)+(2*3)+(2*1) = 17 이렇게 진행하면 됩니다.
2. 3진법 배열을 List에 넣었다면 reverse 메소드로 뒤집고 pow메소드로 10진법으로 변경해줍니다.
* pow메소드를 프로그래머스에서 사용하시려면 아래 코드처럼 math라이브러리를 import해주어야 합니다. 

import kotlin.math.*
class Solution {
    fun solution(n: Int): Long {
        var answer: Long = n.toLong()
        var thr = ArrayList<Long>()
        while(true){
            if(answer<3L){
                thr.add(answer)
                break
            }else{
                thr.add(answer%3)  
                answer = (answer/3)
            }
        }
        thr.reverse()
        answer = thr.get(0)
        for(i in 1..thr.size-1){
            answer+= (thr.get(i).toLong()*((3.0).pow(i))).toLong()
        }
        return answer
    }
}

------------------------------------------------------------결과-------------------------------------------------------

 

10진법<->3진법 변환하는 방법을 알면 금방 풀 수 있는 문제였습니다

다만 반환 값이 Long타입인데 계산도중 또는 결과가 Int의 MAX_VALUE를 넘어가기때문인것 같습니다. 이부분만 유의하셔서 코드 작성하시면 됩니당.

* 숫자옆에 붙어있는 L은 Long타입을 표시한 것 입니다.

-출처: https://kolinuno.tistory.com/17 [코린이유노:티스토리]

라고 합니다.

 

2) 주특기 플러스 주차 복습과제

 주특기 플러스 주차 복습 프로젝트 생성, 패키지 구조 만듬. 저장함.

튜터님과 과제- TodoCard 패키지 구조만들고, 흐름따라 기능하나씩 코드개발중이다.

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

2024.02.01 TIL  (0) 2024.02.01
2024.01.31 TIL  (0) 2024.01.31
2024.01.29 TIL,백오피스 KPT 회고록  (1) 2024.01.29
2024.01.26 TIL  (0) 2024.01.26
2024.01.25 TIL  (0) 2024.01.25