[Rust로 백준 하루 하나] 8-1. 진법 변환

김진산·2024년 9월 3일

Rust로 백준 하루 하나

목록 보기
66/138
post-thumbnail

문제 (2745번)

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)

B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.

출력

첫째 줄에 B진법 수 N을 10진법으로 출력한다.


풀이

코드

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let input: Vec<&str> = input.split_whitespace().collect();
    
    let n = input[0];
    let b: u32 = input[1].trim().parse().unwrap();
    
    let output: u32 = u32::from_str_radix(n, b).unwrap();
    println!("{}", output);
}

해설

fn from_str_radix(src: &str, radix: u32) -> Result<u32, ParseIntError>

https://doc.rust-lang.org/std/primitive.u32.html#method.from_str_radix


추가 학습

  • input.chars().rev().enumerate()는 문자열을 역순으로 순회하여 각 문자의 인덱스와 함께 가져옵니다. 이 방법을 활용하여 직접 만들어줄 수도 있습니다.
for (i, c) in input.chars().rev().enumerate() {
  
}
profile
블록체인 개발자

0개의 댓글