C# - 배열 심화 문제 - 인벤토리 크기 지정하기

2025. 9. 11. 00:19·C#

1차원 스트링 배열을 하나 만들고, 유저에게 원하는 크기를 입력받아 생성함. 숫자가 아니거나, 음수거나, 10이 넘어가는 숫자를 입력시, 무한으로 재요구 하기. 생성 후, n칸의 인벤토리가 생성되었다고 출력하기.

※생성과 동시에 이런식으로 “” 으로 초기화

 

유저에게 무한 반복으로 몇번째 칸을 열람하겠냐고 숫자를 입력 받은 후, 해당 칸이 "", 즉 비어있었다면 , "비어있습니다. 넣고자 하는 값을 입력하세요" 출력, 해당 칸이 ""가 아닌 값이 들어있었다면 해당 값을 출력하기. 종료를 원하면 0을 입력하라고 하기.

  1. "원하는 인벤토리의 크기를 입력하세요" 출력 후 숫자 입력받기. 1~10 아니면 무한반복
  2. "n개 만큼의 인벤토리가 생성되었습니다" 출력
  3. "열람을 원하는 번호를 입력해주시기 바랍니다" 출력 후 유저의 입력 받기 (배열 0번째는 사람 눈엔 1번째)
  4. 칸이 비어있다면("" 이 들어있다면) "칸이 비었습니다. 값을 입력하세요" 출력
  5. 번호에 해당하는 칸에 내용물이 있었다면 해당 내용을 출력
  6. 출력 후 다시 "열람을 원하는 번호를 입력해주시기 바랍니다" 후 계속 유저 입력 받기
  7. 0을 입력받으면 무한반복 종료

 

이번에도 스텝 별로 정리가 돼있어서 그대로 따라가기만 하면 쉽게 구현할 수 있겠다.

바로 시작해보자

 

1. "원하는 인벤토리의 크기를 입력하세요" 출력 후 숫자 입력받기. 1~10 아니면 무한반복 + 생성과 동시에 빈 문자열로 초기화

2. "n개 만큼의 인벤토리가 생성되었습니다" 출력.

using System;

namespace CsharpStudy
{
    internal class Program
    {
        static void Main()
        {
            // 1차원 스트링 배열 생성
            string[] inputStrs;

            // 인벤토리 크기 요청. 1~10 제한
            int inventorySize;

            Console.WriteLine("원하는 인벤토리의 크기를 입력하세요");
            while (true)
            {
                if (int.TryParse(Console.ReadLine(), out inventorySize))
                {
                    if (inventorySize > 0 && inventorySize <= 10) break;
                    else Console.WriteLine("1~10 사이의 정수만 입력하세요.");
                }
                else Console.WriteLine("1~10 사이의 정수만 입력하세요.");
            }

            // 생성 완료
            Console.WriteLine($"{inventorySize}개 만큼의 인벤토리가 생성되었습니다");
            inputStrs = new string[inventorySize];
            // 생성 후 모든 문자열을 빈문자열로 초기화
            for (int i = 0; i < inputStrs.Length; i++)
            {
                inputStrs[i] = "";
            }

    }
}

 

3. "열람을 원하는 번호를 입력해주시기 바랍니다" 출력 후 유저의 입력 받기 (배열 0번째는 사람 눈엔 1번째)

using System;

namespace CsharpStudy
{
    internal class Program
    {
        static void Main()
        {
            // 1차원 스트링 배열 생성
            string[] inputStrs;

            // 인벤토리 크기 요청. 1~10 제한
            int inventorySize;

            Console.WriteLine("원하는 인벤토리의 크기를 입력하세요");
            while (true)
            {
                if (int.TryParse(Console.ReadLine(), out inventorySize))
                {
                    if (inventorySize > 0 && inventorySize <= 10) break;
                    else Console.WriteLine("1~10 사이의 정수만 입력하세요.");
                }
                else Console.WriteLine("1~10 사이의 정수만 입력하세요.");
            }

            // 생성 완료
            Console.WriteLine($"{inventorySize}개 만큼의 인벤토리가 생성되었습니다");
            inputStrs = new string[inventorySize];
            // 생성 후 모든 문자열을 빈문자열로 초기화
            for (int i = 0; i < inputStrs.Length; i++)
            {
                inputStrs[i] = "";
            }

            // 열람 루프 시작
            while (true)
            {
                // 열람 번호 입력
                int inputNum;

                while(true)
                {
                    Console.WriteLine("열람을 원하는 번호를 입력해주시기 바랍니다. 0을 입력시 종료.");
                    if (int.TryParse(Console.ReadLine(), out inputNum))
                    {
                        if (inputNum >= 0 && inputNum <= inventorySize) break;
                        else Console.WriteLine($"0~{inventorySize} 사이의 정수만 입력하세요.");
                    }
                    else Console.WriteLine($"0~{inventorySize} 사이의 정수만 입력하세요.");
                }

                // 입력 번호에 따른 로직 구현
            }
        }
    }
}

 

 

4. 칸이 비어있다면("" 이 들어있다면) "칸이 비었습니다. 값을 입력하세요" 출력

5. 번호에 해당하는 칸에 내용물이 있었다면 해당 내용을 출력

6. 출력 후 다시 "열람을 원하는 번호를 입력해주시기 바랍니다" 후 계속 유저 입력 받기

7. 0을 입력받으면 무한반복 종료

 

4,5,6,7 은 한 묶음의 조건문 처럼 보이니 한 번에 진행해보자.

코드가 if문이 많아 지저분해 보이므로 인벤토리 체크 함수를 따로 만들어 분리해 주겠다.

칸이 비었을 경우에는 입력을 받고

칸이 채워져있으면 콘솔을 출력하는 간단한 함수다.

using System;

namespace CsharpStudy
{
    internal class Program
    {
        static void Main()
        {
            // 1차원 스트링 배열 생성
            string[] inputStrs;

            // 인벤토리 크기 요청. 1~10 제한
            int inventorySize;

            Console.WriteLine("원하는 인벤토리의 크기를 입력하세요");
            while (true)
            {
                if (int.TryParse(Console.ReadLine(), out inventorySize))
                {
                    if (inventorySize > 0 && inventorySize <= 10) break;
                    else Console.WriteLine("1~10 사이의 정수만 입력하세요.");
                }
                else Console.WriteLine("1~10 사이의 정수만 입력하세요.");
            }

            // 생성 완료
            Console.WriteLine($"{inventorySize}개 만큼의 인벤토리가 생성되었습니다");
            inputStrs = new string[inventorySize];
            // 생성 후 모든 문자열을 빈문자열로 초기화
            for (int i = 0; i < inputStrs.Length; i++)
            {
                inputStrs[i] = "";
            }

            // 열람 루프 시작
            while (true)
            {
                // 열람 번호 입력
                int inputNum;

                while(true)
                {
                    Console.WriteLine("열람을 원하는 번호를 입력해주시기 바랍니다. 0을 입력시 종료.");
                    if (int.TryParse(Console.ReadLine(), out inputNum))
                    {
                        if (inputNum >= 0 && inputNum <= inventorySize) break;
                        else Console.WriteLine($"0~{inventorySize} 사이의 정수만 입력하세요.");
                    }
                    else Console.WriteLine($"0~{inventorySize} 사이의 정수만 입력하세요.");
                }

                // 입력 번호가 0보다 크면 인벤토리 체크 함수 실행
                if (inputNum > 0) CheckInventory(inputNum, ref inputStrs);
                // 입력 번호가 0이면 종료
                if (inputNum == 0) break;
            }
        }

        // 인벤토리 체크 함수
        static void CheckInventory(int num, ref string[] inputStrs)
        {
            // 칸이 비었을 경우
            if (inputStrs[num - 1] == "")
            {
                Console.WriteLine("칸이 비었습니다. 값을 입력하세요");
                // 해당 칸에 입력 받음
                inputStrs[num - 1] = Console.ReadLine();
            }
            else
            {
                // 칸이 이미 채워져있으면 출력
                Console.WriteLine(inputStrs[num - 1]);
            }
        }
    }
}

 

 

잘 작동한다.

EZ

'C#' 카테고리의 다른 글

C# - 함수 심화 문제 3종  (0) 2025.09.11
C# - 배열 심화 문제 - 스킬 쿨타임 갱신  (0) 2025.09.11
C# - 배열 심화 문제 - 2차원 배열 swap  (0) 2025.09.11
C# - 함수 (Function)  (0) 2025.09.10
C# - 값 타입 (Value Type), 참조 타입 (Reference Type)  (0) 2025.09.10
'C#' 카테고리의 다른 글
  • C# - 함수 심화 문제 3종
  • C# - 배열 심화 문제 - 스킬 쿨타임 갱신
  • C# - 배열 심화 문제 - 2차원 배열 swap
  • C# - 함수 (Function)
ellug
ellug
Web / App / Game Dev
  • ellug
    dev.ellug
    ellug
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • Javascript (React, Next) (1)
      • C# (66)
      • Graphics (1)
      • Unity (25)
      • 프로그래머스 (0)
        • Lv.0 (0)
        • Lv.1 (0)
        • Lv.2 (0)
        • Lv.3 (0)
      • AI Agent (0)
      • StableDiffusion (0)
      • ETC (1)
      • 잡담 (0)
      • 유머 (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    delegate
    클래스
    class
    큐
    자료구조
    useState
    네트워크
    알고리즘
    unity
    struct
    터미널
    Network
    interface
    추상 클래스
    firebase
    Queue
    Design Pattern
    스택
    function
    stack
    inputsystem
    console
    Abstract
    최적화
    C#
    list
    콘솔
    Photon
    유니티
    게임
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
ellug
C# - 배열 심화 문제 - 인벤토리 크기 지정하기
상단으로

티스토리툴바