3월27일 최종프로젝트 TIL

박희태·2024년 3월 27일
1

최종프로젝트

목록 보기
12/17

알고리즘

  1. 콜라문제
using System;

public class Solution {
    public int solution(int a, int b, int n) {
        int answer = 0;
        
        while(n >= a)
        {
            answer += (n / a) * b;
            n = (n / a) * b + n % a;
        }
        return answer;
    }
}

변수 a,b,c는 a : 내가 줘야하는 양, b : 내가 받는 양, n : 가지고 있는 빈병 개수 를 의미합니다. 반복문으로 n이 a보다 크거나 같으면 코드를 계속진행하고 answer에 n을 a로 나눈값에 b를 곱한것을 더해주고 n에다(n / a) * b + n % a; 를 넣어주고 리턴합니다.

이문제는 너무어려워서 찾아보고 공부한다음 작성했다. 조금있으면 레벨3인데 걱정이된다..

기술면접

16.선택 정렬과 버블 정렬에 대해 설명해주시고, 코드를 작성해보세요.

선택정렬은 숫자를 넣을 자리를 선택하고 그 자리에 가장작은 숫자를 찾아 넣어주는 알고리즘입니다. 코드는

static void Main(string[] args)
{
    int[] array = { 10, 5, 6, 8, 9, 2, 3, 1, 7, 4 };
    int target, temp;

    for(int i = 0; i < array.Length - 1; i++)
    {
        target = i;

        for(int j = i + 1; j < array.Length; j++)
        {
            if (array[j] < array[target])
                target = j;
        }
        if( i != target )
        {
            temp = array[i];
            array[i] = array[target];
            array[target] = temp;
        }
    }
    for(int i = 0;i < array.Length; i++)
    {
        Console.WriteLine(array[i]);
    }
}

배열중 제일앞에있는 숫자를 target으로 지정한다음 i뒤의 숫자와 일일히 비교하고 target숫자보다 j숫자가 작으면 교환을 해줍니다. 마지막으로 i와 target이 일치하지않는다면 두 숫자를 교환해줍니다. 이과정을 끝까지 반복하는것이 선택정렬입니다.

버블정렬은 두 개의 인접한 원소를 비교하여 작은값을 앞쪽으로 큰값을 뒤쪽으로 교환하는 정렬 알고리즘입니다. 코드는

internal class Program
{
    static void Main(string[] args)
    {
        int[] array = { 10, 5, 6, 8, 9, 2, 3, 1, 7, 4 };
        int n = array.Length;

        for(int i = 0; i < n - 1; i++)
        {
            for(int j = 0; j < n - i - 1; j++)
            {
                if (array[j] > array[j + 1])
                {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }

        for(int i = 0; i < array.Length; i++)
        {
            Console.WriteLine(array[i] + " ");
        }
    }
}

이중반복문을 설정합니다. 앞의 숫자와 뒤의숫자를 비교해 뒤숫자가 작다면 두숫자를 교환해줍니다.

최종프로젝트

어제 오늘 2일간
흡입 발사액션 유도선제작을 오브젝트로 보여주도록 제작하였고 발사액션 코드를 일부수정하였다.
또 끌고와야하는 오브젝트가 벽뒤에 존재할경우 끌고오지못하도록 처리했으며 총구앞 일정거리 이내에 오브젝트 및 플레이어 이외에 다른것들이 존재하면 총구위치에서 발사하는것이아닌 플레이어 몸체위치에서 발사가 되도록 코드를 제작하였다. 내일부턴후크가 벽에 고정되어있을 경우 후크를 끌고오는것이아니라 에어가 끌려가도록

_latestTarget.transform.position = Vector3.Slerp(target, _weaponPoint.position, 0.05f);
이것을 AddForce로 변환(약간 곡선느낌나게 베지어곡선으로 곡선모양을 구한다음 해당방향으로 AddForce하도록)

나중에 총구위치에서 바닥으로 레이를쏴서 바닥이체크되면 돌리기제한
체크되지않으면 좀더 돌릴수있도록제작

라인렌더러로 유도선 변경
등등을 구현할예정이다.

profile
초보개발자

0개의 댓글