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 |