Menu
Coddy logo textTech

할 일 삭제하기

Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 18번째.

challenge icon

챌린지

쉬움

세 개의 입력을 받게 됩니다: 첫 번째는 쉼표로 구분된 기존 작업 목록, 두 번째는 삭제할 작업 번호(1부터 시작하는 인덱스), 세 번째는 삭제 후 추가할 새로운 작업입니다. 모든 입력을 읽고, 작업들로 벡터(vector)를 생성하고, 지정된 작업을 삭제한 뒤, 새로운 작업을 추가하고 업데이트된 작업 목록을 표시하세요.

요구 사항:

  • 쉼표로 구분된 작업 설명이 포함된 첫 번째 입력을 읽습니다 (예: Buy groceries,Call dentist,Finish homework)
  • 문자열을 쉼표로 분리하여 개별 작업을 가져옵니다
  • 가변 벡터(mutable vector)를 생성하고 각 작업을 추가합니다
  • 두 번째 입력을 읽고 정수로 변환합니다 (삭제할 작업 번호, 1부터 시작하는 인덱스 사용)
  • 1부터 시작하는 인덱스를 0부터 시작하는 인덱스로 변환하고 .remove()를 사용하여 해당 인덱스의 작업을 삭제합니다
  • 추가할 새 작업이 포함된 세 번째 입력을 읽습니다
  • .push()를 사용하여 벡터에 새 작업을 추가합니다
  • 전체 작업 수를 다음 형식으로 출력합니다: Total tasks: X
  • 각 작업을 별도의 줄에 다음 형식으로 출력합니다: Task: [task description]

입력:

  • 첫 번째 줄: 쉼표로 구분된 작업 설명 (예: Buy groceries,Call dentist,Finish homework)
  • 두 번째 줄: 삭제할 작업 번호를 나타내는 정수 (1부터 시작하는 인덱스)
  • 세 번째 줄: 추가할 새로운 작업 (예: Study for exam)

출력:

  • 첫 번째 줄: Total tasks: X (여기서 X는 삭제 및 추가 후의 총 작업 수)
  • 이어지는 줄들: 각 작업을 Task: [task description] 형식으로 출력

직접 해보기

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // 쉼표로 구분된 작업 목록을 읽습니다
    let tasks_input = lines.next().unwrap().unwrap();
    
    // 삭제할 작업 번호를 읽습니다 (1부터 시작하는 인덱스)
    let task_to_remove = lines.next().unwrap().unwrap();
    let task_number: usize = task_to_remove.trim().parse().unwrap();
    
    // 추가할 새로운 작업을 읽습니다
    let new_task = lines.next().unwrap().unwrap();
    
    // TODO: 아래에 코드를 작성하세요
    // tasks_input을 쉼표로 분리하고 가변 벡터를 생성합니다
    // 지정된 인덱스의 작업을 제거합니다 (1 기반 인덱스를 0 기반으로 변환)
    // 벡터에 새로운 작업을 추가합니다
    
    // 결과 출력
    // 전체 작업 수를 다음 형식으로 출력: Total tasks: X
    // 각 작업을 다음 형식으로 출력: Task: [task description]
}

Logic & Flow의 모든 레슨