[C#] AI에게 배우는 C#

네,가능합니다 ㅣ 2024. 10. 8. 19:50

오늘부터 챗 GPT에게 C#문제를 내달라고 하고 풀어볼 예정이다. 우선 5가지 문제를 내달라고 했다.

계속 프로젝트가 진행중이라 바쁘지만, 최대한 여유가 있을때 마다 C#공부를 병행하려고 한다.

 

검색하지않고 온전히 머릿속에 있는것만으로 풀려고 하니 정말 막막했고, 많은 도전을 했지만 하나도 제대로 풀어내지 못했다.

 

하지만 이런 과정을 거친 후 풀이를 보게된다면 기억에 오래 남을것이다.

 

이걸 보는사람이 있고, 공부중이라면 함께 풀어보고 풀이를 보며 공부하는것을 추천한다.

 

문제 1: 기본적인 문자열 처리

문제: 사용자로부터 문자열을 입력받아, 그 문자열이 회문(앞뒤가 같은 문자열)인지 확인하는 프로그램을 작성하세요. 대소문자는 무시합니다. 예를 들어, "Radar"는 회문입니다.

문제 2: 배열과 반복문

문제: 정수 배열이 주어졌을 때, 배열에서 가장 큰 값과 가장 작은 값을 찾는 함수를 작성하세요. 이 함수는 배열을 매개변수로 받고, 가장 큰 값과 작은 값을 반환해야 합니다.

문제 3: 객체 지향 프로그래밍

문제: "Car"라는 클래스를 작성하세요. 이 클래스는 "Brand", "Model", "Year" 속성을 가지고, "StartEngine()"과 "StopEngine()"이라는 메서드를 포함해야 합니다. 또한, 이 클래스의 인스턴스를 생성하고 메서드를 호출하는 예제를 작성하세요.

문제 4: 예외 처리

문제: 사용자가 숫자를 입력하면, 그 숫자의 제곱근을 계산하여 출력하는 프로그램을 작성하세요. 사용자가 음수를 입력할 경우, "잘못된 입력입니다"라는 메시지를 출력하도록 예외 처리를 해주세요.

문제 5: 파일 입출력

문제: 사용자로부터 텍스트를 입력받아, "user_input.txt"라는 파일에 저장하고, 파일의 내용을 다시 읽어와 콘솔에 출력하는 프로그램을 작성하세요.

 

 

 

아래는 풀이입니다. 어려운 부분은 이해하기 쉽게 주석을 정말 열심히 썼으니 확인하길 바랍니다.

 

문제1

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("문자열을 입력하세요:");
        string input = Console.ReadLine();
        string lowerInput = input.ToLower(); // 대소문자 무시를 위해 소문자로 변환

        // 문자열을 뒤집기
        //문자열을 문자 배열로 변환
        char[] charArray = lowerInput.ToCharArray();
        
        //Array.Reverse함수를 이용해 charArray 를 뒤집음
        Array.Reverse(charArray);
        
        //위에서 뒤집은 charArray를 다시 문자열로 변환하여 reversedInput에 저장
        string reversedInput = new string(charArray);

        // string 끼리 비교하여 회문 여부 판단
        if (lowerInput == reversedInput)
        {
            Console.WriteLine("입력한 문자열은 회문입니다.");
        }
        else
        {
            Console.WriteLine("입력한 문자열은 회문이 아닙니다.");
        }
    }
}

문제2

using System;

class Program
{
    static void Main()
    {
    	//이 로직은 보면 이해를 할 수 있기에 별다른 주석을 추가하지 않겠습니다.
        int[] numbers = { 5, 3, 8, 2, 9, 1, 4 };

        int max = numbers[0];
        int min = numbers[0];

        foreach (int number in numbers)
        {
            if (number > max)
            {
                max = number;
            }
            if (number < min)
            {
                min = number;
            }
        }

        Console.WriteLine($"최대값: {max}, 최소값: {min}");
    }
}

 

문제3

using System;

class Car
{
    public string Brand { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }

    public void StartEngine()
    {
        Console.WriteLine($"{Brand} {Model}의 엔진이 시작되었습니다.");
    }

    public void StopEngine()
    {
        Console.WriteLine($"{Brand} {Model}의 엔진이 꺼졌습니다.");
    }
}

class Program
{
    static void Main()
    {
        Car myCar = new Car
        {
            Brand = "Hyundai",
            Model = "Elantra",
            Year = 2021
        };

        myCar.StartEngine();
        myCar.StopEngine();
    }
}

 

문제4

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("숫자를 입력하세요:");
        try // 예외가 발생할 수 있는 코드를 실행하고, 예외 발생시 catch 블록으로 이동
        {
            double number = Convert.ToDouble(Console.ReadLine());
			//number이 음수라면
            if (number < 0)
            {	
            	//ArgumentException을 발생시켜 catch로 보냄
                throw new ArgumentException("잘못된 입력입니다. 음수의 제곱근은 계산할 수 없습니다.");
            }
			//Math.Sqrt(숫자) = 제곱근을 계산하는 함수
            double sqrt = Math.Sqrt(number);
            Console.WriteLine($"{number}의 제곱근은 {sqrt}입니다.");
        }
        // FormatException = 숫자로 변환할 수 없는 문자열을 변환하려 할 때 발생
        catch (FormatException)
        {
            Console.WriteLine("잘못된 형식입니다. 숫자를 입력하세요.");
        }
        // ArgumentException = 특정 조건에서 개발자가 직접 발생시키는 예외
        catch (ArgumentException ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

 

문제5

using System;
using System.IO;

class Program
{
    static void Main()
    {
        Console.WriteLine("저장할 텍스트를 입력하세요:");
        string userInput = Console.ReadLine();

        // 파일에 텍스트 저장
        File.WriteAllText("user_input.txt", userInput);
        Console.WriteLine("텍스트가 파일에 저장되었습니다.");

        // 파일에서 텍스트 읽기
        string readText = File.ReadAllText("user_input.txt");
        Console.WriteLine("파일에서 읽은 내용:");
        Console.WriteLine(readText);
    }
}

 

 

생각보다 코드는 간단하다.

문제를 풀지 못해도, 아무것도 몰라도 괜찮다.

하지만 공부를 하는 입장에서 모르는건 괜찮지만 배우지 않는건 괜찮지 않다고 생각한다.

다들 화이팅!