import java.util.*
class Solution {
fun solution(s: String): IntArray {
var texts = ""
var repeatText = s
val stack = Stack<Int>()
var length = 0
var zeroCount = 0
var loopCount = 0
while(repeatText != "1")
{
loopCount++
for(item in repeatText)
{
if(item == '1')
texts += item
else
zeroCount++
}
if(texts == "1")
break
length = texts.length
//print("text = $texts ")
//print("length = $length ")
texts = ""
print("beforelength = $length ")
do
{
stack.push(length % 2)
if(length / 2 == 1)
stack.push(1)
length /= 2
}while(length!=1)
print("afterlength = $length ")
while(stack.size != 0)
{
texts += stack.pop().toString()
}
repeatText = texts
texts = ""
//print("stack.size = ${stack.size} ")
//print("text = $texts ")
}
print("loopCount:$loopCount, zeroCount:$zeroCount")
var answer = intArrayOf(loopCount,zeroCount)
return answer
}
}
2번째 문제를 풀지만 코틀린 문법에 많이 미숙한 것 같다.
따로 문법 공부를 해야겠다고 생각했다.
외부 반복문에서 1이 아니라면 계속 반복 한다.(반복한다면 이 때 반복카운트를 증가시킴)
내부에서는 1일 때 추가를 하고 0일떄는 제로카운트를 증가시킨다.
그다음 스택을 활용하여 1의 길이를 이진법으로 변환한다.
이를 외부 반복문으로 다시 돌아가 조건을 확인 후 반복한다.
N개의 최소공배수(2레벨) (0) | 2023.01.15 |
---|---|
카펫(2레벨) (0) | 2023.01.15 |
피보나치 수(2레벨) (0) | 2023.01.15 |
JadenCase 문자열 만들기(레벨 2) (0) | 2023.01.14 |
프로그래머스 깃허브 주소 (0) | 2022.11.28 |
댓글 영역