반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "백준 BOJ - 1373 2진수 8진수" 문제를 풀었습니다.
Github
문제 링크
풀이
바로 직전 포스팅인 8진수 2진수 문제의 반대 버전으로,
2진수 8진수 문제는 2진수를 8진수로 바꾸는 문제입니다.
2진수의 3자리는 8진수의 1자리와 같습니다.
2진수의 3자리를 10진수로 계산하여 append( )하면 8진수로 변환이 가능합니다.
문제에서 주어지는 input의 길이가 100만까지 될 수 있어
10진수를 거치는 등 중간 과정이 있으면 런타임 에러가 발생합니다.
마지막에 Int로 형변환하여 출력해도 런타임 에러가 발생합니다!
이점 주의해서 풀면 어려움 없이 해결할 듯 하네요.
전체 코드
import Foundation
var input = readLine()!.reversed().map { String($0) }
if input.count % 3 > 0 {
input.append(contentsOf: Array(repeating: "0", count: 3 - input.count % 3))
}
input = input.reversed()
var octString = ""
for i in stride(from: 0, to: input.count-1, by: 3) {
let octNumber = (Int(input[i])! * 4) + (Int(input[i+1])! * 2) + Int(input[i+2])!
octString += String(octNumber)
}
print(octString)
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형