본문 바로가기

RUST

[ 백준 | RUST ] - 1000번 :: A + B

728x90

문제 : 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

간단한  더하기를 한 후 실행하는  프로그램을 만들면 된다.

 

여기서 중요한 것은  숫자를 입력을 받는 것이다. 

 

숫자를 입력을 받을라면 std::io 이라는  라이브러리 모듈을 사용해야한다.

//( io === inputoutput ) (std ==== 표준입력 스트림 )

use std::io;

 

그다음 입력 받을 변수를 하나 만들어야 한다.

변수를 만들고 mut은 변수가 값이 변하게 만들려면 작성해야한다.

String::new(); 변수 자료형을 String으로 설정해주고 new() 메서드를 사용해서 새로운 변수를 만들어준다.

let mut input_numbers = String::new();

 

io::stdin() 은 표준입력 스트림이고 read_line() 메서드를 사용해서 입력 받은 값을 읽을 수 있다. (&mut 함수이름) 입력 받는 변수가 변경 되기 때문에 mut 을 사용하고 ( & === point , 변수주소을 의미함) .unwrap()는 타입의 값에서 내부 값을 안저하게 추출하는 메서드입니다.     //https://doc.rust-lang.org/std/io/struct.Stdin.html (표준입력 스트림 참고)

이렇게 하면 값을 입력을 받을 수 있게 됩니다.

io::stdin().read_line(&mut input_numbers).unwrap();

 

이제 입력받은 값을 ㅋ분할해서 정수로 저장하기 위해서 변수를 하나 생성해주면 됩니다.

2가지 변수를 받아야 하기 때문에 벡터로 저장을 해주면 됩니다. Vec은 배열이라고 생각하시면 되고 , <u32>는 안에는 <자료형>을 넣으시면 됩니다. u32는 가장작은 정수형 자료형입니다.

입력받은 값을 nums에 넣어야 하니까 = input_numbers 로 작성해 주면됩니다. 

    let nums: Vec<u32> = input_numbers

 

.trim()는 앞뒤의 공백을 제거해주는 메서드입니다.

.split_whitespace()는 공백(스페이스) 기준으로 문자열을 나눠주는 메서드 입니다.

.map(|x|) |x| === 클로저의 매개변수 리스트를 이야기 한다. 입력값이 1,2라면 | 1, 2| 이렇게 만들어지고 각각의 값이 x에 들어간다고 생각하시면 됩니다. 그래서 .parse() 메서드를 사용하여 문자열을 숫자 변형하게 된다.

.collect()는 변환된 요소를 벡터로 수집하기 위해서 사용합니다.

    let nums: Vec<u32> = input_numbers
        .trim()
        .split_whitespace()
        .map(|x| x.parse().expect("Err2"))
        .collect();

마지막으로 벡터의 배열 값의 방에 접근하여 더해서 출력을 하시면 됩니다.

print!("{}",nums[0] + nums[1]);

전체 코드

use std::io;

fn main() {
    let mut input_numbers = String::new();

    io::stdin().read_line(&mut input_number).unwrap();

    let nums: Vec<u32> = input_numbers
        .trim()
        .split_whitespace()
        .map(|x| x.parse().expect("Err2"))
        .collect();
    print!("{}", nums[0] + nums[1]);
}