1550번: 16진수백준/문제2023. 9. 4. 13:51
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/1550
언어 : Kotlin
문제 설명 :
16진수 수를 입력받아서 10진수로 출력하는 프로그램을 작성하시오.
- 첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다.
- 첫째 줄에 입력으로 주어진 16진수 수를 10진수로 변환해 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
A | 10 |
풀이 :
기본 내장 함수 사용시
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = br.readLine()
bw.write("${n.toInt(16)}")
bw.flush()
bw.close()
}
기본 내장 함수 미사용시
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import kotlin.math.pow
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val hex = br.readLine()
bw.write("${converter(hex)}")
bw.flush()
bw.close()
}
fun converter(hex: String): Long {
var result = 0.toLong()
var power = hex.length - 1
for (i in hex.indices) {
val num = hex[i]
result += if (num in 'A'..'Z') ((num.code - 55) * 16.0.pow(power--.toDouble())).toLong()
else ((num.code - '0'.code) * 16.0.pow(power--.toDouble())).toLong()
}
return result
}
진법 변환 알고리즘 참고 내용 : https://velog.io/@hyeon930/%EC%A7%84%EB%B2%95-%EB%B3%80%ED%99%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
'백준 > 문제' 카테고리의 다른 글
1292번: 쉽게 푸는 문제 (0) | 2023.09.06 |
---|---|
1100번: 하얀 칸 (0) | 2023.09.05 |
2576번: 홀수 (0) | 2023.09.01 |
17478번: 재귀함수가 뭔가요? (0) | 2023.09.01 |
10162번: 전자레인지 (1) | 2023.09.01 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!