Rust로 알고리즘을 풀어보자!
Rust를 배우는 중 뭔가 알고리즘을 풀고 싶어졌다. 한번 Rust로 풀어보자.
일단, 가장 기본적인 문제부터 풀어보자.
1330번: 두 수 비교하기
https://www.acmicpc.net/problem/1330
일단 입력을 받아보자!
use std::io;
fn main() {
}
음... 일단 새로운 스트링 버퍼를 만들어 보자.
fn main() {
let mut input = String::new();
}
그리고 여기에다가 입력을 받아보면 될 것 같다.
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input);
}
일단 입력은 받았고, 이제 수를 쪼개보자. Rust는 split을 지원하는 것 같아 보인다.
let split_string = input.split_whitespace();
음 근데 이거 어떻게 값을 얻나. 찾아보니까 collect로 iterator로 변환을 하고 받아야된다고 한다. 그리고 받는 iterator 타입도 명시해야한다고 해서 Vec<&str>
로 명시했다.
let split_string: Vec<&str> = input.split_whitespace().collect();
let a = split_string[0];
let b = split_string[1];
근데 나는 a랑 b를 스트링으로 받았다. int로 변환을 해야될 것 같다.
let a_n: i32 = a.into();
let b_n: i32 = b.into();
뭔가 형변환이 되면 좋겠는데 안되더라. 다른 방법을 찾아봐야겠다.
음 방법을 찾았다.
let a_n: i32 = match a.parse() {
Ok(i) => i,
Err(_e) => -1
};
let b_n: i32 = match b.parse() {
Ok(i) => i,
Err(_e) => -1
};
이렇게 하면 된다는데 뭔가 번거로워 보인다. 그냥 위험해도 짧게 써야겠다.
let a_n: i32 = a.parse().unwrap();
let b_n: i32 = b.parse().unwrap();
그리고 비교를 해주면 된다. 다음은 전체 코드이다.
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed!");
let split_string: Vec<&str> = input.split_whitespace().collect();
let a = split_string[0];
let b = split_string[1];
let a_n: i32 = a.parse().unwrap();
let b_n: i32 = b.parse().unwrap();
if a_n == b_n {
println!("==");
} else if a_n > b_n {
println!(">");
} else if a_n < b_n {
println!("<");
};
}
Rust-Lang으로 알고리즘 문제 풀기(기초 다지기): https://blex.me/@baealex/%EB%9F%AC%EC%8A%A4%ED%8A%B8%EB%A1%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C-%ED%92%80%EA%B8%B0-%EB%B0%B1%EC%A4%80-1330-5543-1