Menu
Coddy logo textTech

최종 코드

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

challenge icon

챌린지

쉬움

네 개의 입력을 받아 전체 할 일 목록(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. 최종 리스트를 순회하며 각 작업을 출력합니다
    
}

Logic & Flow의 모든 레슨