오늘은 RUST를 이용하여 무언가를 만드는게 아닌 algorithm을 풀것이다.
첫번째로 풀 문제는

기초라고 할 수 있는 "Hello World!"를 출력하는 문제이다.
우선 algorithm을 풀기위해 vscode에 파일을 만들자.

파일을 만들자 말자 2557번 문제의 정답과 비슷한 코드가 적혀있다.
fn main() {
println!("Hello World!");
}
C언어를 통해서 예시를 들자면 fn main(){}부분 같은 경우 int main(){}과 같다.
그리고 println!을 통해서 출력하는 것을 알 수 있다.

아주 쉽게 해결할 수 있다.
파일에 나오는 예시 코드 같은경우 출력 결과와 다른것을 알수 있다.
출력 결과: Hello World!
예시 코드: Hello, world!
예시 코드를 제출하면 틀린다고 나오기 때문에 주의하자.
다음 문제는 수학 문제중 가장 기초 문제인 1000번 A+B이다.
이 문제 같은 경우에는 Hello World!문제와 다르게 출력만 하는 것이 아닌 직접 입력하고 그 입력한 수를 더하여 출력하기 때문에 코드가 조금 길어진다.
우선 입력을 받아야 하는 문제이므로
use std::io;
라이브러리 모듈을 가져오자.
다음으로 해야할것은 입력받을 변수를 만드는 것이다.
let mut s = String::new();
s로 받아올 것이다.
다음으로는 입력을 받는 부분이다.
io::stdin().read_line(&mut s).unwrap();
io::stdin()이 입력 받는 부분
.read_line(&mut s)입력받는 부분을 읽어주는 부분
.unwrap();안전하게 추출하는 부분이다.
입력받은 부분을 나눈후 정수로 저장하는 코드이다.
let values:Vec<i32> = s
.split_whitespace()
.map(|s| s.parse().unwrap())
.collect();
코드가 엄청 긴 것을 알수 있다.
코드를 해석하면 우선 values라는 변수를 만든다.
그리고 Vec를 통해 입력받은 값을 나누어 저장한다.
<i32>같은 경우 정수형으로 표현할 수 있는 가장 작은 값이다.
.split_whitespace()는 문자열을 공백 기준으로 나누는 부분이다.
map(|s| s.parse().unwrap())각 부분 문자열을 숫자로 변환 하는 코드이다.
.collect();같은 경우 Iterator를 컬렉션으로 수집하는 부분이다.
마지막으로
println!("{}", values[0] + values[1]);
출력을 하면 된다. values를 둘로 나누어 저장하였기 때문에
values[0], values[1]을 더하면 된다.
values <- 3, 4
values[2]
values[0] = 3, values[1] = 4
values[0] + values[1] = 7
use std::io;
fn main(){
let mut s = String::new();
io::stdin().read_line(&mut s).unwrap();
let values:Vec<i32> = s
.split_whitespace()
.map(|s| s.parse().unwrap())
.collect();
println!("{}", values[0] + values[1]);
}

완벽하다.
마지막으로 for문을 사용하는 문제를 풀고 마무리 하자.
이 문제는 N을 입력받아서 N줄만큼 N별을 찍어내는 문제이다.
예시로 N이 6일 경우
*
**
***
****
*****
******
이 출력된다.
use std::io;
fn main(){
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.expect("Cannot read line.");
let input: usize = input.trim().parse().unwrap();
for i in 1..=input {
println!("{}", "*".repeat(i));
}
}
코드는 이러하다.
우선 입력을 받아야 하므로
use std::io;
라이브러리를 불러오고
let mut input = String::new();
input을 만든다.
그리고 해야할 것은 반복문을 사용해 별을 찍어내는 것이다.
for i in 1..=input {
println!("{}", "*".repeat(i));
}
}
i를 사용하여 1.. 1부터 ~ input값 만큼 반복을 하는 것이다.
출력을 할때에는 i만큼 repeat을 해서 출력을 하기 때문에
예제 출력과 같은 출력을 할 수 있다.
오늘은 Rust를 이용해 알고리즘 문제 3개를 풀어봤다. 난이도는 매우 낮은 문제였지만, 새로운 언어로 풀다 보니 생각보다 고전했던 것 같다.