Rust Algorithm (1): 1330

명이·2023년 1월 4일
0

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!("<");
    };
}

References

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

profile
tech explorer | https://duge.space/myounJAwobV

0개의 댓글

관련 채용 정보