최종 코드
Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 19번째.
챌린지
쉬움네 개의 입력을 받아 전체 할 일 목록(to-do list) 워크플로우를 처리하게 됩니다: 첫 번째는 쉼표로 구분된 초기 할 일 목록, 두 번째는 추가할 새로운 할 일, 세 번째는 조회할 할 일 번호(1부터 시작하는 인덱스), 네 번째는 삭제할 할 일 번호(1부터 시작하는 인덱스)입니다. 이러한 모든 작업을 처리하고 최종 상태를 표시하는 완전한 할 일 목록 관리 프로그램을 작성하세요.
요구 사항:
- 쉼표로 구분된 할 일 설명이 포함된 첫 번째 입력을 읽습니다 (예:
Buy groceries,Call dentist,Finish homework) - 문자열을 쉼표로 분리하고 이 초기 할 일들로 가변 벡터(mutable vector)를 생성합니다
- 두 번째 입력을 읽고
.push()를 사용하여 이 새로운 할 일을 벡터에 추가합니다 - 세 번째 입력을 읽고 이를 정수로 변환합니다 (조회할 1부터 시작하는 할 일 번호)
- 네 번째 입력을 읽고 이를 정수로 변환합니다 (삭제할 1부터 시작하는 할 일 번호)
- 1부터 시작하는 인덱스를 0부터 시작하는 인덱스로 변환하고
.remove()를 사용하여 지정된 할 일을 삭제합니다 Total tasks: X를 출력합니다 (여기서 X는 최종 할 일의 개수입니다)Viewing task: Y를 출력합니다 (여기서 Y는 조회가 요청된 할 일 번호입니다)- 최종 할 일 목록을 순회하며 각 할 일과 번호(1부터 시작)를 출력합니다
- 조회 번호와 일치하는 할 일(삭제 조정 후)의 경우,
[X] [task description] (selected)형식으로 출력합니다 - 그 외 모든 할 일은
[X] [task description]형식으로 출력합니다
입력:
- 첫 번째 줄: 쉼표로 구분된 할 일 설명 (예:
Buy groceries,Call dentist,Finish homework) - 두 번째 줄: 추가할 새로운 할 일 (예:
Study for exam) - 세 번째 줄: 조회할 할 일 번호를 나타내는 정수 (1부터 시작하는 인덱스)
- 네 번째 줄: 삭제할 할 일 번호를 나타내는 정수 (1부터 시작하는 인덱스)
출력:
- 첫 번째 줄:
Total tasks: X(X는 최종 할 일의 개수) - 두 번째 줄:
Viewing task: Y(Y는 요청된 조회 번호) - 이어지는 줄들:
[X] [task description]형식의 각 할 일과 번호 - 선택된 할 일(조회 번호와 일치하는 항목)에는
(selected)가 추가되어야 합니다
직접 해보기
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// 쉼표로 구분된 초기 작업들을 읽습니다
let initial_tasks = lines.next().unwrap().unwrap();
// 추가할 새 작업을 읽습니다
let new_task = lines.next().unwrap().unwrap();
// 조회할 작업 번호를 읽습니다 (1부터 시작)
let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// 삭제할 작업 번호를 읽습니다 (1부터 시작)
let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// TODO: 아래에 코드를 작성하세요
// 1. initial_tasks를 쉼표로 분리하고 가변 벡터를 생성합니다
// 2. 벡터에 new_task를 추가합니다
// 3. remove_number에 해당하는 작업을 삭제합니다 (0부터 시작하는 인덱스로 변환)
// 4. 전체 작업 수와 조회 중인 작업 정보를 출력합니다
// 5. 최종 리스트를 순회하며 각 작업을 출력합니다
}