할 일 삭제하기
Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 18번째.
챌린지
쉬움세 개의 입력을 받게 됩니다: 첫 번째는 쉼표로 구분된 기존 작업 목록, 두 번째는 삭제할 작업 번호(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]
}