Menu
CoddyTech

요소 제거하기

Coddy Rust 여정의 논리와 흐름 섹션에 포함된 레슨. 66개 중 13번째.

때로는 벡터에 요소를 추가하는 것뿐만 아니라 제거해야 할 때도 있습니다. Rust는 요소를 제거하는 두 가지 주요 메서드를 제공하며, 각 메서드는 서로 다른 상황에 맞게 설계되었습니다.

.pop() 메서드는 벡터에서 마지막 요소를 제거하고 반환합니다:

let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // 40을 제거하고 Some(40)을 반환합니다
// numbers는 이제 [10, 20, 30]입니다

.pop()이 Option을 반환한다는 점에 주목하세요. 제거할 요소가 있으면 Some(value)를 반환하고, 벡터가 이미 비어 있으면 None을 반환합니다. 따라서 벡터가 비어 있는 경우에도 안전하게 사용할 수 있습니다.

.remove() 메서드는 특정 인덱스에 있는 요소를 제거하고 해당 요소를 반환합니다.

let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // "banana"를 제거합니다
// 이제 fruits는 ["apple", "cherry"]입니다

.remove()를 사용하면 삭제된 인덱스 뒤의 모든 요소가 빈자리를 채우기 위해 왼쪽으로 이동합니다. 시작 부분이나 중간에서 요소를 삭제하면 많은 요소를 이동해야 하므로, 벡터가 큰 경우 이 작업은 더 느릴 수 있습니다.

두 방법 모두 벡터의 내용을 수정하므로 벡터가 변경 가능해야 합니다. 끝에서 항목을 제거하려면 .pop()을 선택하고, 특정 위치에서 항목을 제거해야 한다면 .remove()를 선택하세요.

challenge icon

챌린지

쉬움

두 개의 입력을 받습니다. 첫 번째는 쉼표로 구분된 숫자 목록이고, 두 번째는 제거할 인덱스입니다. 시작 코드에서는 이미 두 입력을 읽고 숫자들을 변경 가능한 벡터 numbers로 변환합니다. 지정된 인덱스의 요소를 제거하고 남은 요소를 각각 별도의 줄에 출력하세요.

요구 사항:

  • 두 번째 입력(index_input)을 인덱스를 나타내는 정수로 변환합니다.
  • .remove()를 사용하여 해당 인덱스의 요소를 제거합니다.
  • 남은 각 요소를 별도의 줄에 출력합니다.

입력:

  • 첫 번째 줄: 쉼표로 구분된 정수(예: 10,20,30,40,50)
  • 두 번째 줄: 제거할 인덱스를 나타내는 정수

출력: 벡터의 남은 각 요소를 별도의 줄에 출력합니다.

직접 해보기

use std::io;

fn main() {
    // 쉼표로 구분된 숫자를 읽습니다
    let mut numbers_input = String::new();
    io::stdin().read_line(&mut numbers_input).expect("Failed to read line");
    
    // 제거할 인덱스를 읽습니다
    let mut index_input = String::new();
    io::stdin().read_line(&mut index_input).expect("Failed to read line");
    
    // "10,20,30"을 벡터로 변환합니다: 쉼표를 기준으로 나누고, 각 부분을 파싱한 뒤, Vec에 수집합니다
    let mut numbers: Vec<i32> = numbers_input
        .trim()
        .split(',')
        .map(|s| s.trim().parse().unwrap())
        .collect();
    
    // TODO: 아래에 코드를 작성하세요
    // 1. index_input을 정수로 변환하세요
    // 2. 지정된 인덱스의 요소를 제거하세요
    // 3. 남은 각 요소를 별도의 줄에 출력하세요
    
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 Rust 컴파일러