Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

동구의_C# & Unity_개발일지

2024.01.11 내일배움캠프 14일차 TIL C#_ProGramming(알고리즘, C# 심화) 본문

C#

2024.01.11 내일배움캠프 14일차 TIL C#_ProGramming(알고리즘, C# 심화)

mongle_0l 2024. 1. 11. 10:21

오늘은 알고리즘 특강이 아닌 직접 문제를 풀어보았다.

알고리즘 코드카타라는 이름으로 아침 9시부터 10시까지 1시간 동안 매일 풀어야 되는 알고리즘 문제로 오늘 풀어야 될 첫 번째 문제는 매우 쉬웠다.

반복되는 연습이라는 뜻을 가진 `Kata`를 통해 매일 아침 코딩을 훈련해 보자!


알고리즘 코드카타 1일차

두 수의 차

문제 설명
정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.
using System;

public class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 - num2;
        
        return answer;
    }
}

알고리즘 문제 전체 화면


개인 과제 피드백

디버깅은 프로그래머로써 꼭 익혀야 하는 필수 스킬
구현하지 못한 부분은 시간을 내어 완성해 보는 게 실력 향상에 도움

Character, Item 같은 클래스는 별도의 파일로 분리하여 구현 하는 게 코드 관리에 좋다.
일반적으로 파일1 개당 클래스 1개를 권장

일관성 있는 네이밍 규칙을 사용하여 작성
파일이나 클래스 프로퍼티 함수는 PascalCase, 필드는 camelCase 가 일반적

조건 처리할 때 단순하게 1,2,3 으로 하는것 보다 enum 으로 정의하여 처리하는 게 가독성에 좋다.
enum MenuType
{
    STATUS = 1,
    NVENTORY,
    STORE
}

README를 잘 작성하는 습관
이력서를 제출할때 GitHub링크를 추가하는데 잘 작성된 README는 면접관에게 좋은 인상을 주며, README는 보는 사람이 쉽게 이해할수 있도록, 프로젝트 설명과 함께 스크린샷이 포함되면 좋습니다.

주말에 시간을 내서 구현을 못한 부분을 완성해 내야겠다!


팀 과제 던전 게임 만들기

static int CalculateDamage(int baseAttack)
{
    Random random = new Random();
    double error = Math.Ceiling(baseAttack * 0.1);      // 공격력의 10% 오차, 소수점은 올림 처리
    int randomValue = random.Next(-(int)error, (int)error + 1);
    return baseAttack + randomValue;
}

랜덤 함수를 만들어 공격력에 10%의 오차가 나게 하는 코드이다.

static void Attack(Player player, Monster monster)
{
    if (monster.IsDead())
    {
        Console.WriteLine("잘못된 입력입니다. 이미 죽은 몬스터를 공격할 수 없습니다.");
    }
    else
    {
        Console.WriteLine($"몬스터 {monster.Name}을(를) 공격합니다.");
        int damage = CalculateDamage(player.AttackPower);
        monster.TakeDamage(damage);
        Console.WriteLine($"몬스터에게 {damage}의 데미지를 입혔습니다.");

        if (monster.IsDead())
        {
            Console.WriteLine($"몬스터 {monster.Name}을(를) 처치했습니다.");
        }
    }
}
Player가 Moster을 공격하는 코드이다.
이미 죽은 몬스터는 공격할 수 없으며,
int damage = CalculateDamage(player.AttackPower);는 CalculateDamage 메서드를 호출하여 공격력에 오차를 가한 값을 계산한다. 이 값은 damage 변수에 저장된다.

아직 미구현이지만 공격을 하니깐 9 ~ 11 사이의 랜덤 한 데미지로 HP가 줄어들면서 0이 되면 Dead가 뜬다!