두 수 비교하기

두 수를 비교하지만 경우의 수는 세 개입니다(농담입니다).
두 수, A B를 입력받은 후 대소 비교해 출력합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
use std::io::{self, Read};

fn main() {
    let mut input = String::new();
    io::stdin().read_to_string(&mut input).unwrap();
    let mut it = input.split_whitespace();

    let a: i16 = it.next().unwrap().parse().unwrap();
    let b: i16 = it.next().unwrap().parse().unwrap();

    println!(
        "{}",
        if a > b {
            ">"
        } else if a < b {
            "<"
        } else {
            "=="
        }
    );
}

시험 성적

if문을 네 개 쓰는 것보다 예쁩니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
use std::io::{self, Read};

fn main() {
    let mut input = String::new();
    io::stdin().read_to_string(&mut input).unwrap();
    let mut it = input.split_whitespace();

    let score: i16 = it.next().unwrap().parse().unwrap();

    println!(
        "{}",
        match score {
            90..=100 => "A",
            80..90 => "B",
            70..80 => "C",
            60..70 => "D",
            _ => "F",
        }
    )
}

사분면 고르기

음…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
use std::io::{self, Read};

fn main() {
    let mut input = String::new();
    io::stdin().read_to_string(&mut input).unwrap();
    let mut it = input.split_whitespace();

    let x: i16 = it.next().unwrap().parse().unwrap();
    let y: i16 = it.next().unwrap().parse().unwrap();

    println!(
        "{}",
        match (x.signum(), y.signum()) {
            (1, 1) => 1,
            (-1, 1) => 2,
            (-1, -1) => 3,
            (1, -1) => 4,
            _ => unreachable!(),
        }
    );
}

윤년

match를 사용했습니다.
and 연산자도 or 연산자도 처음 쓰네요.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
use std::io::{self, Read};

fn main() {
    let mut input = String::new();
    io::stdin().read_to_string(&mut input).unwrap();
    let mut it = input.split_whitespace();

    let year: i16 = it.next().unwrap().parse().unwrap();
    println!(
        "{}",
        ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) as u8
    )
}

사파리월드

차이의 abs를 사용할 때 더 넓은 범위를 저장할 수 있는 타입을 사용하고 있습니다.
문제를 풀 때는 그냥 항상 i128을 쓰는 것도 나쁘지는 않겠습니다.
마지막 조건 새싹 문제입니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use std::io::{self, Read};

fn main() {
    let mut input = String::new();
    io::stdin().read_to_string(&mut input).unwrap();
    let mut it = input.split_whitespace();

    let n: i32 = it.next().unwrap().parse().unwrap();
    let m: i32 = it.next().unwrap().parse().unwrap();

    println!("{}", n.abs_diff(m));
}

or

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use std::io::{self, Read};

fn main() {
    let mut input = String::new();
    io::stdin().read_to_string(&mut input).unwrap();
    let mut it = input.split_whitespace();

    let n: i64 = it.next().unwrap().parse().unwrap();
    let m: i64 = it.next().unwrap().parse().unwrap();

    println!("{}", (n - m).abs());
}