- [ C# ]C# #9 알고리즘 기초 22023-08-19 20:04:25선택정렬(Selection Sort) 선택정렬은 가장 작은/큰 데이터를 맨 앞으로 순서대로 이동시켜 정렬시키는 알고리즘이다. 첫 번째 루프에서, 첫 번째 인덱스의 값(data[0])과 나머지 인덱스의 값들과 비교하여 가장 작은 값을 첫 번째 인덱스의 값과 교환한다. 두 번째 루프에서, 두 번째 인덱스의 값(data[0+1])과 나머지 인덱스의 값들과 비교하여 가장 작은 값을 두 번째 값과 교환한다.(첫 번째 값은 제외) 이런 방식으로 배열 길이 만큼 루프 반복을 하여 순서대로 데이터를 정렬시킨다. SWAP 코드: 두 변수를 바꾸려면 기존의 값을 저장하는 변수(temp)가 하나 더 필요하다. //Input int[] data = { 3, 2, 1, 4, 5 }; int N = data.Length; //의..
- [ C# ]C# #8 TextRPG 12023-08-18 20:55:33개요 개인 과제인 C# 콘솔 텍스트 RPG게임이다. 일단 필수 구현 부분에서의 뼈대와 클래스 설계를 진행하였는데 로직 자체에 문제가 많고 효율성이 떨어져서 버그가 많이 발생하기 때문에 입력처리 관련 기능은 전부 없애고 다시 최적화하여 작성할 예정이다. 초기 기본 클래스는 다음과 같이 크게 3 부분으로 나눌 예정이다. 캐릭터 클래스: 플레이어의 기본 속성과 행동을 정의. 레벨, 체력, 공격력, 방어력, 이름, 직업.. 레벨업, 경험치 획득 등과 관련된 메서드 아이템 클래스: 게임 매 아이템들의 이름, 설명, 효과(방어력 증가, 공격력 증가) 정의. 게임 매니저 클래스: 게임의 진행, 화면 표시, 사용자 입출력 처리 등. 코드 namespace TextRPG { internal class GameManage..
- [ C# ]C# #7 스네이크 게임2023-08-18 13:55:00개요 3주차 과제 중 스네이크 게임이다. 초기 게임 구조 설계와 각 클래스별 생성자를 구현하는 부분은 완료하였지만 세부적인 메서드를 작성하는 것이 감이 잡히지 않아서 풀이 코드를 참조하면서 작업을 진행하였다. 그 후 모든 코드를 해석하고 이해하는 과정을 주석으로 남기는 것으로 마무리하였다. 설명 Main 메서드: 프로그램의 시작점이다. 뱀과 음식의 생성, 게임 실행 및 초기화, 충돌체크, 게임 오버 등을 제어. DrawWalls 메서드: 게임의 벽을 그리는 역할. WriteGameover 메서드: 게임 오버 메시지를 출력. WriteText 메서드: 텍스트를 지정된 위치에 출력. 키 입력처리: Console.KeyAvaiable()을 통해 사용자의 키 입력 여부를 확인하고 Console.ReadKey()..
- [ C# ]C# #6 알고리즘 기초2023-08-17 21:09:32오늘은 프로그래머스 알고리즘 문제와 3주차 과제를 진행하려고 계획했다. 하지만 기본적인 기초 개념들이 잘 잡히지 않아서 많은 시간을 고민에 투자하여도 막히는 부분이 다수 있었다. 그래서 배운 내용을 토대로 기본 문법만을 사용하여 구현할 수 있는 정말 기초적인 알고리즘을 스스로 짜보았다. 합계(SUM) //Input int[] scores = { 100, 75, 50, 37, 90, 95 }; int sum = 0; //Process: SUM for(int i = 0; scores.Length; i++} { if( scores[i] > 80) { sum += scores[i] } } //Output Console.WriteLine($"{scores.Length}명의 점수 중 80점 이상의 총합: {sum}..
- [ C# ]C# #5 클래스, 객체, 상속, 다형성2023-08-16 19:35:43클래스와 객체 데이터와 데이터를 조작하는 메서드를 묶어서 하나의 단위로 정의하는 객체 생성을 위한 일종의 설계도. 클래스는 속성(멤버 변수, 필드)과 동작(메서드)을 가짐. //클래스의 구조 [접근 제한자] class ClassName { // 필드 (클래스의 데이터) // 메서드 (클래스의 동작) } 객체 : 객체는 클래스를 기반으로 생성된 모든 것. 인스턴스 : 클래스를 기반으로 생성된 실제 객체. "클래스명 식별자 = new 클래스명();" 을 통해 객체 생성(메모리 공간을 할당 받음) 필드(Fields) : 클래스나 구조체 내에서 객체의 상태(데이터)를 저장하는 변수. 메서드(Methods) : 클래스나 구조체 내에서 객체의 동작(기능)을 정의하는 함수. class Person { //필드 pub..
- [ C# ]C# #4 메서드와 구조체2023-08-15 23:01:28메서드 메서드는 특정한 작업을 수행하기 위해 사용되는 개념으로 함수라고도 불리움. 코드의 재사용성, 모듈화, 가독성과 유지보수성, 중복 제거, 추상화 등의 특징을 가지고 있음. 메서드의 구조와 문법 접근 제한자(Access Modifier) : 메서드가 어디서 접근 가능한지 범위 지정(public, private, protected 등 사용) 반환 타입(Return Type) : 메서드가 작업을 수행한 후 반환되는 값의 데이터 타입 지정.(반환하는 값이 없을 시 'void' 키워드 사용) 매개변수(parameter) : 메서드가 호출될 때 받아들일 매개변수 지정. 메서드에 필요한 입력 값 전달 시 사용하며 0개 이상의 매개변수를 정의할 수 있음. 반환값(Return Value) : 메서드가 결과를 반활할..
- [ C# ]C# #3 배열과 컬렉션2023-08-15 18:53:56배열(Array) 동일한 자료형의 값들이 연속적으로 저장되는 자료 구조. 선언할 때 크기를 지정해야하며, 동적으로 크기 조절이 되지 않음. 인덱스를 통해서 값의 지정, 접근이 가능. //배열을 한 줄로 선언 및 초기화 자료형[] 배열명 = new 자료형[크기]; //배열 요소에 접근 배열명[인덱스] = 값; int[] array1 = new int[5]; //크기가 5인 정수형 배열 선언 string[] array2 = new string[3]; //크기가 3인 문자열 배열 선언 int num = 0; array1[0] = 1; array1[1] = 2; array1[2] = 3; array1[3] = 4; array1[4] = 5; num = array1[0]; 배열의 길이는 배열명.Length. in..
- [ C# ]C# #2 조건문과 반복문2023-08-14 19:29:34내배캠 TIL 12 조건문 프로그램이 특정 조건에 따라 동작을 수행하도록 하는 제어 구조. if - else 문 if (조건식1) { // 조건식1이 참일 경우 실행할 코드 } else if (조건식2) { // 조건식2가 참일 경우 실행할 코드 } else { // 모든 조건식이 거짓일 경우 실행할 코드 } 중첩 조건문 : 하나 이상의 조건문이 다른 조건문 안에 포함되어있는 구조. int age = 25; bool isStudent = true; if (age >= 18) { if (isStudent) { Console.WriteLine("성인 학생입니다."); } else { Console.WriteLine("성인입니다."); } } else { Console.WriteLine("미성년자입니다.");..