2998번: 8진수백준/문제2024. 2. 27. 11:54
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/2998
언어 : Kotlin
문제 설명 :
창영이는 여러 가지 진법을 공부하고 있다. 창영이는 어제 2진법을 배웠고, 오늘은 8진법을 배웠다. 이제, 2진법 수를 8진법 수로 변환하려고 한다.
창영이가 사용한 방법은 다음과 같다.
- 2진수의 길이가 3으로 나누어 떨어질 때 까지 수의 앞에 0을 붙인다.
- 그 다음, 3자리씩 그룹을 나눈다.
- 아래의 표를 참고해 8진수로 바꾼다.
2진수가 주어졌을 때, 창영이가 사용한 방법을 이용해 8진수로 바꾸는 프로그램을 작성하시오.
입력 :
첫째 줄에 2진수가 주어진다. 이 수는 100자리 이내이고, 첫 번째 자리는 1이다.
출력 :
첫째 줄에 8진수를 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
1010 | 12 |
11001100 | 314 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val input = readLine()
val sb = StringBuilder()
var result = ""
sb.append(input)
while (true) {
if (sb.length % 3 == 0) break
sb.insert(0, "0")
}
sb.chunked(3).forEach {
result += when (it) {
"001" -> 1
"010" -> 2
"011" -> 3
"100" -> 4
"101" -> 5
"110" -> 6
"111" -> 7
else -> 0
}
}
bw.write(result)
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
25640번: MBTI (1) | 2024.02.28 |
---|---|
1296번: 팀 이름 정하기 (0) | 2024.02.28 |
2954번: 창영이의 일기장 (1) | 2024.02.27 |
17863번: FYI (1) | 2024.02.27 |
14405번: 피카츄 (1) | 2024.02.26 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!