728x90
반응형
안녕하세요. 이번 포스팅은 자바 소스코드를 코틀린코드로 자동변환하는 것을 다뤄보겠습니다.
이 기능은 안드로이드 스튜디오에서 자동으로 지원하는데요,
이 안드로이드 스튜디오에서... 자바 코드를 손쉽게 코틀린으로 변환이 가능합니다.
그냥 자바 소스코드를 복사, 붙여넣기 하면 되는데요
drcode-devblog.tistory.com/109
이 소스 코드를 코틀린 소스로 변환해보겠습니다.
package binaryConvertRepeat;
import java.util.Arrays;
public class BinaryConvertRepeat {
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(Arrays.toString(s.solution("110010101001")));
System.out.println(Arrays.toString(s.solution("01110")));
System.out.println(Arrays.toString(s.solution("1111111")));
}
}
class Solution {
public int[] solution(String s) {
int cnt = 0, zero = 0;
while(!s.equals("1")) {
int c = s.replaceAll("0", "").length();
zero += s.length() - c;
s = toBinary(c);
cnt++;
}
int[] answer = {cnt, zero};
return answer;
}
public String toBinary(int c) {
String temp = "", rtn = "";
while(c > 0) {
temp += String.valueOf(c%2);
c/=2;
}
for (int i = temp.length() -1; i >= 0 ; i--) rtn += temp.charAt(i);
return rtn;
}
}
위 소스 코드 전부다를 복사 붙여넣기하면 안됩니다.
패키지는 빼고 import 밑으로 복사를 합니다.
반응형
그러면 다음과 같이 코드가 변환됩니다.
import java.util.*
object BinaryConvertRepeat {
@JvmStatic
fun main(args: Array<String>) {
val s = Solution()
println(Arrays.toString(s.solution("110010101001")))
println(Arrays.toString(s.solution("01110")))
println(Arrays.toString(s.solution("1111111")))
}
}
internal class Solution {
fun solution(s: String): IntArray {
var s = s
var cnt = 0
var zero = 0
while (s != "1") {
val c = s.replace("0".toRegex(), "").length
zero += s.length - c
s = toBinary(c)
cnt++
}
return intArrayOf(cnt, zero)
}
fun toBinary(c: Int): String {
var c = c
var temp = ""
var rtn = ""
while (c > 0) {
temp += (c % 2).toString()
c /= 2
}
for (i in temp.length - 1 downTo 0) rtn += temp[i]
return rtn
}
}
음.. 얼추 비슷해졌는데
메인함수가 object화 되어서 실행을 할수가 없게 되었죠
메인함수를 밖으로 빼주고, class Solution 앞에 있는 internal을 지워보도록 하겠습니다.
import java.util.*
fun main(args: Array<String>) {
val s = Solution()
println(Arrays.toString(s.solution("110010101001")))
println(Arrays.toString(s.solution("01110")))
println(Arrays.toString(s.solution("1111111")))
}
class Solution {
fun solution(s: String): IntArray {
var s = s
var cnt = 0
var zero = 0
while (s != "1") {
val c = s.replace("0".toRegex(), "").length
zero += s.length - c
s = toBinary(c)
cnt++
}
return intArrayOf(cnt, zero)
}
fun toBinary(c: Int): String {
var c = c
var temp = ""
var rtn = ""
while (c > 0) {
temp += (c % 2).toString()
c /= 2
}
for (i in temp.length - 1 downTo 0) rtn += temp[i]
return rtn
}
}
이제 실행할 수 있는데요,
실행 결과는 다음과 같습니다.
[3, 8]
[3, 3]
[4, 1]
728x90
반응형
'모바일 > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 안드로이드 리스너 개념 및 코드 (0) | 2021.04.27 |
---|---|
[Kotlin] Android Activity 개념 및 코드 (0) | 2021.04.27 |
[Kotlin] 코틀린 제너릭(Generic) (0) | 2021.04.11 |
[Kotlin] 코틀린 인터페이스, 상속과 인터페이스의 차이 (0) | 2021.04.11 |
[Kotlin] 코틀린 상속 (0) | 2021.04.11 |
댓글