- [ 카테고리 없음 ]C# #25 TextRPG_Team 32023-08-31 20:52:31진행상황 간단하게 BattleManager 클래스 내부에서 수정을 통해 스테이지를 구성하였다. StartBattle 메서드에서는 한 번의 전투가 끝나고 플레이어가 살아남은 경우 다음 스테이지로 이동하거나 포기하는 선택권이 주어진다. ShuffleMonster 메서드 내에서는 진행한 스테이지에 따라 최대 몬스터 숫자가 증가시키는 로직을 추가하여 난이도를 조정하였다. 또한 5스테이지에서는 새로운 클래스를 통해 세팅해놓은 보스몬스터가 출현한다. StageProgress 클래스는 현재 스테이지 진행 상황을 저장하고 로드하는 기능을 가지고 있다. Load메서드는 JsonUtility.Load("stage_progress")를 호출하여 해당 json 파일에서 저장된 스테이지 진행 상황을 불러온다. Save메서드는 ..
- [ 카테고리 없음 ]C# #24 동적 프로그래밍, 그리디 알고리즘, 분할 정복, 코딩 테스트 문제의 종류2023-08-30 21:10:49동적 프로그래밍(Dynamic Programming, DP) 어떤 문제를 더 작은 하위 문제들로 나누어 해결하고 그 결과를 저장하여 중복 계산을 피하면서 효율적으로 문제를 해결하는 알고리즘 설계 기법. 탑다운 방식: 큰 문제를 해결하기 위해 작은 하위 문제들을 재귀적으로 푸는 방식. 중복 계산을 피하기 위해 계산한 결과를 메모이제이션(저장)하고 이미 계산한 값이 필요할 때마다 참조하여 재사용. 바텀업 방식: 더 작은 하위 문제부터 시작하여 문제의 크기를 점점 키워가며 해결하는 방식. 보통 반복문을 사용하여 작은 문제부터 큰 문제까지 순차적으로 해결하며 중복 계산을 피함. 동적 프로그래밍은 최적 부분 구조와 중복 부분 문제의 특징을 가진 문제들을 효과적으로 해결할 수 있음. // 문제: 피보나치 수열의 n..
- [ 카테고리 없음 ]C# 23 탐색 알고리즘, 그래프, 최단 경로 알고리즘2023-08-30 20:42:54탐색 알고리즘(Search Algorithm) 주어진 데이터 세트에서 특정한 값을 찾는 과정과 방법 선형 탐색(Linear Search) 탐색 시작 위치를 배열의 첫 번째 원소로 초기화. 현재 위치의 원소를 찾고자 하는 값과 비교. 값이 일치하면 해당 위치를 반환하고 탐색 종료. 값이 일치하지 않으면 다음 위치로 이동하여 비교를 반복. 배열의 끝까지 비교해도 찾는 값이 없으면 탐색을 종료. int SequentialSearch(int[] arr, int target) { for (int i = 0; i < arr.Length; i++) { if (arr[i] == target) { return i; } } return -1; } 이진 탐색(Binary Search) 데이터가 정렬되어 있을 때 사용, 탐색..
- [ 카테고리 없음 ]C# #22 TextRPG_Team 22023-08-29 21:33:10진행상황 전반적인 BattleManager 클래스의 수정을 통해 기본적인 전투 시스템 구현을 완료하였다. 일단 전투 로직부터 전투 창 출력까지 모든 전투 관련한 것들은 이 클래스에서 관리하기로 하였다. StartBattle 메서드는 전투의 시작과 진행을 나타낸다. 기존 전투 창이 두개로 나누어져 있는 것을 매개변수를 통해 하나의 메서드로 관리가 가능하도록 수정하였다. ShuffleMonsters 메서드는 몬스터 랜덤 출현을 나타낸다. 랜덤한 수와 랜덤한 종류로 출력되며 기존 데미지 공유의 문제를 다음과 같은 방식으로 해결하였다. 우선 Monster 클래스에 기존 몬스터와 같은 속성을 반환하는 Clone이라는 메서드를 만들었다. 다시 ShuffleMonsters 메서드로 돌아와서 Clone 메서드를 통해 ..
- [ C# ]C# #21 TextRPG_Team 12023-08-28 21:09:20진행상황 필수 요구 사항 3번, 전투 시스템을 담당하게 되었다. 공격력 랜덤 배율 등의 생각보다 디테일하게 신경써야할 요소들이 있었다. 두 개의 클래스를 추가하게 되었으며 하나는 몬스터의 기본 정보들을 담고있는 Monster 클래스이다. 아이템이 추가되는 방식과 비슷하게 Program 클래스에서 몬스터 정보를 세팅할 수 있다. Program 클래스 내의 DisplayBattle과 DisplayBattleStart 메서드를 통해 전투 화면을 출력하였다. 이 부분에서 신경써야 할 사항은 몬스터의 숫자와 종류의 랜덤 생성이었다. 새 리스트를 만들고 랜덤의 몬스터를 선택 후 랜덤의 인덱스의 요소를 추가하는 방식으로 구현하였다. 전투를 관리하는 BattleManager 클래스는 우선 생성자를 통해 전투에 꼭 필요..
- [ C# ]C# #20 알고리즘 코드카타 12023-08-27 23:27:49짝수와 홀수 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. num을 2로 나눈 나머지를 확인하여 짝수인지 홀수인지를 판별하는 문제. num이 2로 나누어 떨어진다면(num % 2 ==0이 참이라면) answer을 Even으로 설정하고, 그렇지 않다면 Odd로 설정. public class Solution { public string solution(int num) { string answer = ""; if(num%2 == 0){ answer = "Even"; }else{ answer = "Odd"; } return answer; } } 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution..
- [ C# ]C# #19 정렬 알고리즘2023-08-26 22:27:15정렬 알고리즘(Sort Algorithm) 주어진 데이터 세트를 특정 순서(오름차순, 내림차순, 사전식 등)로 배열하는 방법. 버블 정렬(Bubble Sort) 배열의 첫 번째 요소부터 마지막 이전의 요소까지 순차적으로 옆의 요소들을 비교. 옆의 요소들의 순서가 잘못되어 있다면 두 요소들을 교환. 이를 통해 더 큰 요소가 뒤로 이동. 비교와 교환을 배열의 길이만큼 반복하여 정렬. // Input int[] data = { 3, 2, 1, 4, 5 }; int N = data.Length; // 배열의 길이 // Process: Bubble Sort for (int i = 0; i < N - 1; i++) // i = 0 to N-1 { for (int j = 0; j < N - i - 1; j++) //..
- [ 카테고리 없음 ]C# #18 알고리즘의 기본 개념2023-08-26 20:49:05알고리즘 알고리즘은 문제를 해결하기 위한 단계적인 절차나 방법을 뜻함. 프로그래밍에서는 주어진 입력을 처리하여 특정한 출력을 만드는 방법을 가져오는데 사용됨. 효율적인 알고리즘은 시간, 메모리 등 자원의 효율성을 증가시킴. Big O 표기법 알고리즘의 효율성(시간 복잡도와 공간 복잡도)을 나타내는 데 사용되는 표기법. 입력에 따른 시간과 공간이 필요로 하는 양을 설명하기 위해 사용됨. 빅오 표기법은 큰 영향을 주는 부분을 중심으로 계산이 진행되어 최고 차수 항목만 남기고 상수를 버림. 빅오 표기법은 다음과 같은 주요 형태를 가지고 있음. O(1): 상수 시간 복잡도,입력 크기에 무관하게 항상 일정한 시간이 소요됨. O(log n): 로그 시간 복잡도, 입력 크기에 비례하지 않고 빠르게 증가함. O(n):..