RUST STUDY - ALGORITHM

2ho·2025년 5월 8일

RUST

목록 보기
3/3
post-thumbnail

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

Hello World! - 2557

첫번째로 풀 문제는

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

파일을 만들자 말자 2557번 문제의 정답과 비슷한 코드가 적혀있다.

분석

fn main() {
    println!("Hello World!");
}

C언어를 통해서 예시를 들자면 fn main(){}부분 같은 경우 int main(){}과 같다.
그리고 println!을 통해서 출력하는 것을 알 수 있다.

제출


아주 쉽게 해결할 수 있다.

‼️주의할 점

파일에 나오는 예시 코드 같은경우 출력 결과와 다른것을 알수 있다.
출력 결과: Hello World!
예시 코드: Hello, world!
예시 코드를 제출하면 틀린다고 나오기 때문에 주의하자.

A + B - 1000

다음 문제는 수학 문제중 가장 기초 문제인 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]을 더하면 된다.

예시 입력값: 3, 4

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문을 사용하는 문제를 풀고 마무리 하자.

별 찍기(1) - 2438

이 문제는 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개를 풀어봤다. 난이도는 매우 낮은 문제였지만, 새로운 언어로 풀다 보니 생각보다 고전했던 것 같다.

profile
!developer

0개의 댓글