RUST
[백준 | RUST ] - 2588 :: 곱셈
Suil_bear
2023. 9. 29. 23:30
728x90
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
두 수를 입력받은 다음 일의 자리 십의 자리 백의 자리를 어떻게 나눌어 줄지 생각을 해보면 된다. 또한 각각으로 입력을 받아야 되기 때문에 입력을 2개 받게 만들어야 한다.
방법 1
use std::io;
fn main() {
let mut input_one = String::new();
let mut input_two = String::new();
io::stdin().read_line(&mut input_one).expect("Err");
io::stdin().read_line(&mut input_two).expect("Err");
let input_one = format!("{} {}", input_one, input_two);
let arr: Vec<u32> = input_one
.trim()
.split_whitespace()
.map(|x| x.parse().expect("잘못된 입력입니다."))
.collect();
let one = arr[1] % 10;
let ten = (arr[1] % 100 - one) / 10;
let hund = (arr[1] - 10 * ten - one) / 100;
println!("{}", arr[0] * one);
println!("{}", arr[0] * ten);
println!("{}", arr[0] * hund);
println!("{}", arr[0] * arr[1]);
}
두수를 입력을 받아서 format! 을 사용하여 하나의 문자열로 만들어준다. ( 중간에 스페이스를 사용해야지 두수를 구분하여 arr 배열에 넣을 수 있다) 나머지를 이용하여 일, 십, 백의 자리별로 구분해준다.
방법2
use std::io;
fn main() {
let mut frist_input = String::new();
let mut second_input = String::new();
// 변수 2개를 입력 받늗다
io::stdin().read_line(&mut frist_input).unwrap();
io::stdin().read_line(&mut second_input).unwrap();
let frist_vec: i32 = frist_input.trim().parse().unwrap();
let second_vec: i32 = second_input.trim().parse().unwrap();
let one = second_vec % 10;
let ten = (second_vec % 100 - one) / 10;
let hund = (second_vec - 10 * ten - one) / 100;
let mut number_vec = Vec::new();
number_vec.push(one);
number_vec.push(ten);
number_vec.push(hund);
for i in number_vec.iter() {
println!("{}", frist_vec * i);
}
println!("{}", frist_vec * second_vec);
}
둘의 방법이 비슷하지만 변수를 덜 사용할 수 있다. 방법2에는 각각의 숫자를 한 배열에 넣어서 출력을 해주었다. 각 배열에 차례대로 접근할 수 있도록 반복자 iter()을 사용해주면 반복문을 사용하여 출력을 할 수 있다.