오늘의 어려웠던 과제

공재원
∙∙조회 8

Q3. 격자 배치의 빈칸

문제

초기 항목 수(020), 바꿀 열 수(16), 바꿀 항목 수(0~20)를 한 줄씩 입력함.

GridLayout에 ItemCount, Columns 자동 프로퍼티를 두고 기본값은 각각 0·4임. 항목은 한 행을 왼쪽부터 채우고 남은 항목이 있으면 다음 행에 배치함. Rows는 필요한 행 수, EmptySlots는 마지막까지 마련된 칸 중 빈칸 수를 계산하는 읽기 전용 프로퍼티임. 항목이 없으면 둘 다 0임.

객체 이니셜라이저로 초기 ItemCount만 설정한 객체를 만들고 행 수를 별도 정수 변수에 저장함. 초기 상태, Columns를 바꾼 상태, ItemCount를 바꾼 상태를 차례로 출력함. 마지막에는 따로 저장했던 초기 행 수를 출력함.

plain text
초기 항목 수: 9
바꿀 열 수: 3
바꿀 항목 수: 5
makefile
초기: 3행, 빈칸 3
열 변경: 3행, 빈칸 0
개수 변경: 2행, 빈칸 1
저장한 행 수: 3

내가 작성한 코드

Main

csharp
using System;
using CH19Q03;

Console.Write("초기 항목 수: ");
int itemCount = int.Parse(Console.ReadLine());

GridLayout gridLayout = new GridLayout { ItemCount = itemCount };
int initialRows = gridLayout.Rows;

Console.WriteLine($"초기: {initialRows}행, 빈칸 {gridLayout.EmptySlots}");

Console.Write("바꿀 열 수: ");
int changeCol = int.Parse(Console.ReadLine());
gridLayout.Columns = changeCol;

Console.WriteLine($"열 변경: {gridLayout.Rows}행, 빈칸 {gridLayout.EmptySlots}");

Console.Write("바꿀 항목 수: ");
int changeItemCount = int.Parse(Console.ReadLine());
gridLayout.ItemCount = changeItemCount;


Console.WriteLine($"개수 변경: {gridLayout.Rows}행, 빈칸 {gridLayout.EmptySlots}");
Console.WriteLine($"저장한 행 수: {initialRows}");

GridLayout

csharp
using System;
using System.Collections.Generic;
using System.Text;

namespace CH19Q03
{
    internal class GridLayout
    {
        public int ItemCount { get; set; } = 0;
        public int Columns { get; set; } = 4;

        public int EmptySlots =>  ItemCount % Columns == 0 ? 0 : Columns - (ItemCount % Columns);

        public int Rows
        {
            get
            {
                if (ItemCount % Columns == 0)
                {
                    return ItemCount / Columns;
                }
                else
                {
                    return ItemCount / Columns + 1;
                }
            }
        }
    }
}

행과 열을 구하는 방법은 언제 보아도 어려운 것 같다.
문제를 이해하는 부분부터 어떻게 구현해야 할지 머리 속에서 잘 그려지지 않는다.
문제가 너무 이해가 가지 않으면 AI에게 문제를 해석해 달라고 한다.
단. AI가 직접 코드는 짜지 않도록 나에게 문제에 대한 설명을 해주고 방향성만 잡을 수 있도록 말이다.
해당 문제는 아무리 잡고 있어도 이해가 되질 않아 AI에게 문제 해석과 방향성을 잡아 달라고 부탁했다.
문제를 어느 정도 이해하고 난 후엔 막혔던 코드 작성이 조금씩 풀려가며 문제를 해결 하였다.
아직 까진 머릿속에서 모든 걸 정리할 수 없는 단계이다 보니 조금의 도움은 필요한 것 같다.
앞으로는 도움 없이도 머릿속에서 코딩이 잘 그려지면 좋겠다.