Menu
Coddy logo textTech

할 일 추가하기

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

challenge icon

챌린지

쉬움

작업 관리 기초를 바탕으로, 이제 시스템에 새로운 작업을 추가하는 핵심 기능을 구현해 보겠습니다. 이 챌린지는 기존 슬라이스에 새로운 작업을 추가하여 작업 목록을 확장하는 함수를 만드는 데 중점을 둡니다.

중요 참고 사항: 작업 이름에 공백이 포함될 수 있으므로(예: "Buy groceries"), 전체 입력 줄을 읽으려면 bufio.Scanner를 사용해야 합니다. fmt.Scanln 함수는 첫 번째 공백에서 읽기를 중단하므로 공백이 포함된 작업 이름이 잘릴 수 있습니다. bufio.NewScanner(os.Stdin)를 사용하고 scanner.Scan()을 호출한 뒤 scanner.Text()를 사용하여 전체 줄을 읽으십시오.

두 가지 입력을 받게 됩니다:

  • 기존 작업의 수를 나타내는 문자열 (예: "2")
  • 쉼표로 구분된 작업 이름들이 포함된 문자열 (예: "Buy groceries,Call dentist,Finish project")

여러분의 과제는 다음과 같습니다:

  1. 이전 챌린지와 동일하게 Name (string) 및 Completed (bool) 필드를 가진 Task 구조체를 정의합니다.
  2. Task 구조체 슬라이스와 작업 이름(string)을 매개변수로 받는 addTask라는 함수를 만듭니다.
  3. addTask 함수는 작업이 추가된 새 슬라이스를 반환해야 합니다 (새 작업의 Completed 상태는 false로 설정되어야 합니다).
  4. 공백이 포함된 작업 이름을 적절히 처리하기 위해 bufio.Scanner를 사용하여 입력 줄을 읽습니다.
  5. 첫 번째 입력에 지정된 기존 작업 수에 따라 초기 작업 슬라이스를 생성합니다:
    • 숫자가 "0"이면 빈 슬라이스로 시작합니다.
    • 숫자가 "0"보다 크면 "Existing Task 1", "Existing Task 2" 등과 같은 이름을 가진 자리 표시자 작업을 해당 개수만큼 생성하며, 모두 미완료 상태로 표시합니다.
  6. 두 번째 입력에서 쉼표로 구분된 작업 이름들을 파싱합니다.
  7. addTask 함수를 사용하여 각 새 작업을 슬라이스에 추가합니다.
  8. 최종 슬라이스의 각 작업을 "Task: [name], Completed: [true/false]" 형식으로 출력합니다.
  9. 전체 작업 수를 "Total tasks: [count]" 형식으로 출력합니다.

예를 들어, 기존 작업이 1개 있고 "Buy groceries,Call dentist"를 추가하려는 경우, 출력에는 기존 작업이 먼저 표시되고 그 뒤에 두 개의 새 작업이 표시된 후 마지막으로 총 개수가 표시되어야 합니다. 이 챌린지는 append 함수를 사용한 슬라이스 조작을 연습하고 데이터 구조를 확장하는 기능을 구축하는 방법을 보여줍니다.

직접 해보기

package main

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

type Task struct {
	Name      string
	Completed bool
}

// TODO: 여기에 addTask 함수를 생성하세요

func main() {
	// 입력 라인을 읽기 위한 스캐너 생성
	scanner := bufio.NewScanner(os.Stdin)
	
	// 기존 작업의 수 읽기
	scanner.Scan()
	existingTasksStr := scanner.Text()
	
	// 작업 이름 읽기
	scanner.Scan()
	taskNamesStr := scanner.Text()
	
	// TODO: 구현 완료하기
	// 1. existingTasksStr를 정수로 변환
	// 2. 기존 작업으로 초기 슬라이스 생성
	// 3. taskNamesStr를 파싱하고 새 작업 추가
	// 4. 모든 작업과 총 개수 출력
}

로직 & 흐름의 모든 레슨