https://www.acmicpc.net/problem/1373

 

1373번: 2진수 8진수

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

www.acmicpc.net

 

[난이도] Bronze2
[유형] 수학

[풀이]
2진수 문자열을 3개씩 나눠서 3개를 8진수의 한자리로 보고 변환해주면 0~7의 수로 바꿀 수 있다.

 

import java.io.BufferedReader
import java.io.InputStreamReader
fun main() = with(BufferedReader(InputStreamReader(System.`in`))){
    var n = readLine()
    n = n.reversed()
    val arr = listOf(1,2,4)
    var ans=StringBuilder()
    for(i in n.indices step 3){
        var t=0
        for(j in 0..2){
            if(i+j>=n.length) break
            t+=arr[j]*(n[i+j]-'0')
        }
        ans.append(t.toString())
    }
    println(ans.reverse())
}


https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Bronze2/1373.cpp

 

 

+ Recent posts