문제 : 두 정수 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]);
}
'RUST' 카테고리의 다른 글
[ 백준 | RUST ] - 10926번 :: ??! (0) | 2023.09.29 |
---|---|
[ 백준 | RUST ] - 2557번 :: Hello World (0) | 2023.09.29 |
[ 백준 | RUST ] - 입출력과 사칙연산 (0) | 2023.09.29 |
[백준 | RUST ] - 2588 :: 곱셈 (0) | 2023.09.29 |
[백준 | RUST ] - 18108번 :: 1998년생인 내가 태국에서는 2541년생?! (0) | 2023.09.29 |