Menu
Coddy logo textTech

모든 할 일 보기

Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 22번째.

challenge icon

챌린지

쉬움

작업 관리 시스템을 계속해서 개발하면서, 이제 모든 작업을 사용자 친화적인 형식으로 표시하는 기능을 구현하게 됩니다. 이 챌린지는 작업 컬렉션을 반복하고 명확한 시각적 표시기를 사용하여 각 작업의 완료 상태를 보여주는 데 중점을 둡니다.

두 개의 입력을 받게 됩니다:

  • 작업 수를 나타내는 문자열 (예: "4")
  • 다음 형식의 작업 데이터를 포함하는 문자열: "name1:status1,name2:status2,name3:status3" (여기서 status는 "true" 또는 "false"입니다. 예: "Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")

당신의 과제는 다음과 같습니다:

  1. 이전 챌린지와 동일하게 Name (string) 및 Completed (bool) 필드를 가진 Task 구조체를 정의합니다.
  2. Task 구조체의 슬라이스를 매개변수로 받는 viewAllTasks라는 함수를 만듭니다.
  3. viewAllTasks 함수 내부에서 슬라이스를 반복하고 다음 형식으로 각 작업을 출력합니다:
    • 완료된 작업의 경우: "[x] [task_name]"
    • 미완료 작업의 경우: "[ ] [task_name]"
  4. 두 번째 입력에서 작업 데이터를 파싱하여 작업 슬라이스를 생성합니다:
    • 입력을 쉼표로 분할하여 개별 작업 항목을 가져옵니다.
    • 각 항목에 대해 콜론으로 분할하여 이름과 상태를 분리합니다.
    • 상태 문자열을 불리언으로 변환합니다 ("true"true로, "false"false로).
  5. 생성된 슬라이스를 사용하여 viewAllTasks 함수를 호출합니다.
  6. 모든 작업을 표시한 후, 다음 형식으로 요약을 출력합니다: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"

예를 들어, "Buy groceries:false,Call dentist:true,Finish project:false"라는 작업이 있는 경우, 출력은 적절한 체크박스와 함께 각 작업을 보여준 다음 총 개수와 완료 통계가 포함된 요약을 표시해야 합니다. 이 챌린지는 슬라이스 반복, if 문을 사용한 조건부 서식 지정을 연습하고 사용자에게 작업 진행 상황에 대한 명확한 보기를 제공합니다.

직접 해보기

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

type Task struct {
	Name      string
	Completed bool
}

func viewAllTasks(tasks []Task) {
	// TODO: 모든 작업을 표시하는 함수를 구현하세요.
	// 완료된 작업의 경우: "[x] [task_name]"
	// 미완료 작업의 경우: "[ ] [task_name]"
}

func main() {
	var numTasksStr string
	fmt.Scanln(&numTasksStr)
	numTasks, _ := strconv.Atoi(numTasksStr)

	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	taskData := scanner.Text()

	var tasks []Task

	// TODO: taskData 문자열에서 작업 데이터를 파싱하세요.
	// 쉼표로 분할하여 개별 작업 항목을 가져옵니다.
	taskEntries := strings.Split(taskData, ",")
	_ = taskEntries

	// 각 항목에 대해 콜론으로 분할하여 이름과 상태를 분리합니다.
	// 상태 문자열을 불리언으로 변환하고 Task 구조체를 생성합니다.

	// TODO: 생성된 슬라이스로 viewAllTasks 함수를 호출하세요.

	// TODO: 요약을 계산하고 출력하세요.
	// 형식: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
	_ = tasks
	_ = numTasks
}

로직 & 흐름의 모든 레슨