Menu
Coddy logo textTech

기타 슬라이스

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

문자열 슬라이스는 매우 유용하지만, 슬라이싱은 문자열에만 국한되지 않습니다. Rust의 슬라이스 개념은 모든 요소의 시퀀스로 확장되므로, 소유권을 가져오지 않고 컬렉션을 다루는 강력한 도구가 됩니다.

문자열에서 배운 것과 동일한 구문을 사용하여 배열과 벡터에서 slice를 만들 수 있습니다. 예를 들어, numbers 배열이 있다면 그 일부 또는 전체를 참조하는 slice를 만들 수 있습니다:

let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // 이것은 우리에게 [2, 3, 4]를 줍니다
let full_slice: &[i32] = &numbers;  // 이것은 전체 배열을 참조합니다

vector에도 같은 원리가 적용됩니다. vector에서 slice를 만들어 data를 이동하거나 복사하지 않고 data의 일부를 다룰 수 있습니다:

let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // 이것은 우리에게 [10, 20]을 줍니다
challenge icon

챌린지

쉬움

세 개의 input을 받습니다. 첫 번째 input은 comma-separated numbers 목록입니다. 두 번째 input은 slice를 Create하기 위한 start 및 end indices를 나타내는, 공백으로 separated된 두 개의 numbers입니다. 세 번째 input은 slice에서 Access할 index를 나타내는 단일 number입니다.

comma-separated numbers로 vector를 Create한 다음, specified된 range를 사용하여 slice를 Create합니다. 주어진 index에서 slice의 element에 Access하고 이를 Print합니다.

Requirements:

  • 첫 번째 input(comma-separated numbers)을 Read하고 공백을 trim합니다
  • input을 comma로 split하고 각 number를 i32로 parse합니다
  • 이 numbers로 vector를 Create합니다
  • 두 번째 input(공백으로 separated된 두 개의 numbers)을 Read하고 공백을 trim합니다
  • 두 번째 input을 공백으로 split하여 start 및 end indices를 가져옵니다
  • 두 indices를 모두 usize로 Parse합니다
  • range syntax &vec[start..end]를 사용하여 vector에서 slice를 Create합니다
  • 세 번째 input(Access할 index)을 Read하고 공백을 trim합니다
  • index를 usize로 Parse합니다
  • specified된 index에서 slice의 element에 Access합니다
  • Access한 element를 Print합니다

Input:

  • 첫 번째 줄: Comma-separated numbers(예: 10,20,30,40,50)
  • 두 번째 줄: 공백으로 separated된 두 개의 numbers(예: 1 4)
  • 세 번째 줄: index number(예: 2)

Output:

  • slice에서 specified된 index에 있는 element

직접 해보기

use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // 첫 번째 입력 읽기 (쉼표로 구분된 숫자)
    let first_input = lines.next().unwrap().unwrap();
    
    // 두 번째 입력 읽기 (시작 및 끝 인덱스)
    let second_input = lines.next().unwrap().unwrap();
    
    // 세 번째 입력 읽기 (접근할 인덱스)
    let third_input = lines.next().unwrap().unwrap();
    
    // TODO: 아래에 코드를 작성하세요
    // 쉼표로 구분된 숫자를 파싱하고 벡터 생성
    // 시작 및 끝 인덱스 파싱
    // 벡터에서 슬라이스 생성
    // 슬라이스에서 지정된 인덱스의 요소에 접근
    
    // 결과 출력
    // println!("{}", result);
}
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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