심화과정 팀프로젝트 2일차

박희태·2024년 2월 27일
0

알고리즘

오늘의 알고리즘은 35번 부족한금액 계산하기 를 풀었다.

using System;

class Solution
{
    public long solution(int price, int money, int count)
    {
        long sum = 0;    
        long answer = 0;
        
        for(int i = 1; i <= count; i ++)
        {
            sum += price * i;
        }
        
        if(sum >= money)
        {
            answer = sum - money;
        }
        else
        {
            answer = 0;
        }
        return answer;
    }
}

생각보다 어려운 문제는 아니었다. 입력받은 price, money, count값과 자체적으로 계산할 sum, answer값을 선언한다음 반복문을 통해 price와 count를 곱하고 sum에 더해주었다. 그리고 돈이부족하면 sum과 money를 뺀값을 리턴해주고 부족하지 않다면 0을 리턴해주는 방법으로 코드를 작성하였다. 그런데 제출후 채점하기를하니 몇몇예제에서 실패가 나와 무슨문제인지 몰랐는데 질문하기에서 확인해보니 범위를 벗어난값이 나오는 오버플로우가 발생한다는 답이있었다. 그래서 int를 long으로 변경하니 문제없이 정상적으로 작동을 하였다.

팀과제

어제 참고하면서 제작하던 BSP알고리즘과 블로그의 코드를 계속 보다보니 도저히 기한내에 제작이 불가능하다! 라는 결론이 나왔다. 그래서 노선을 유튜브로 돌려 Tilemap으로 랜덤맵 생성하는 영상이있는지 검색을 하였고 다행히 관련영상이 존재해 영상을보고 제작을 이어갔다.
코드중에서 HashSet이란 함수가 나왔는데 이것은 고유한 요소 집합을 저장하는 컬렉션, 즉 중복값을 허용하지 않는다. 맵을 생성할때 방의 위치가 중복으로 나오면 안되기때문에 이 함수를 사용하여 제작하였다.
처음 값을 넣을때는 UnionWith을 이용해 넣으면되고 해당값을 사용한다음 삭제해야할땐 ExcepWith를 사용해 값을 제거했다.

다행히 참고할영상이있어 랜덤한 맵을 계속생성하는것은 무사히 작성이되었다. 이제 중간보스, 최종보스의 방을 설정하는것과 맵 카운트를 추가하는 작업을 진행할것이다.

profile
초보개발자

0개의 댓글