52. Unity 게임개발 심화 주차 팀프(6)

이규성·2024년 1월 9일
0

TIL

목록 보기
58/106

01/09 프로젝트 발표의 날

📌알고리즘 코드 카타 (Algorithm Code Kata)

using System.Collections.Generic;
using System.Linq;

public class Solution
{
    public long[] solution(int n, int m)
    {
        // 최대공약수 겹치는 약수 중 소수를 곱한 값
        // 12 = 1 2 3 4 6 12
        // 30 = 1 2 3 5 6 10 15 30
        // 12와 30의 최대 공약수는 2 * 3 = 6;

        Divisor(n); // 1, 2, 3
        Divisor(m); // 1, 2, 3

        List<int> num = new List<int>();
        long GCDvisor = 1;

        for (int i = 0; i < Divisor(n).Count; i++)
        {
            for (int j = 0; j < Divisor(m).Count; j++)
            {
                if (Divisor(n)[i] == Divisor(m)[j])
                {
                    num.Add(Divisor(n)[i]);
                }
            }
        }

        for (int i = 0; i < num.Count; i++)
        {
            GCDvisor *= num[i];
        }

        // 최소공배수 둘의 배수 중 겹치는 값중 가장 작은 값
        // 12 = 24 36 48 60 || 2 * 2 * 3
        // 30 = 60          || 2 * 3 * 5
        // 12와 30의 최소공배수는 60;

        Multiple(n); // 2, 2, 3, 1
        Multiple(m); // 2, 3, 5

        List<int> num2 = new List<int>();
        long LCMultiple = 1;

        if (Multiple(n).Count >= Multiple(m).Count)
        {
            for (int i = 0; i < Multiple(n).Count; i++)
            {
                num2.Add(Multiple(n)[i]);
            }

            for (int i = 0; i < Multiple(m).Count; i++)
            {
                if (num2.Contains(Multiple(m)[i]) == false)
                {
                    num2.Add(Multiple(m)[i]);
                }
            }
        }
        else
        {
            for (int i = 0; i < Multiple(m).Count; i++)
            {
                num2.Add(Multiple(m)[i]);
            }

            for (int i = 0; i < Multiple(n).Count; i++)
            {
                if (num2.Contains(Multiple(n)[i]) == false)
                {
                    num2.Add(Multiple(n)[i]);
                }
            }
        }

        for (int i = 0; i < num2.Count; i++)
        {
            LCMultiple *= num2[i];
        }

        long[] answer = new long[2] { GCDvisor, LCMultiple };
        return answer;
    }
    public List<int> Divisor(int num)
    {
        List<int> listnum = new List<int>();
        List<int> listDiv = new List<int>();
        for (int i = 1; i <= num; i++)
        {
            if (num % i == 0)
            {
                listnum.Add(i);
            }
        }

        for (int k = 0; k < listnum.Count; k++)
        {
            if (listnum[k] / 1 == 1)
            {
                listDiv.Add(listnum[k]);
            }
            else if (listnum[k] / 2 == 1)
            {
                listDiv.Add(listnum[k]);
            }
        }

        return listDiv;
    }

    public List<int> Multiple(int num)
    {
        List<int> multiple = new List<int>();

        while (true)
        {
            if (num % 2 == 0)
            {
                num = num / 2;
                multiple.Add(2);
            }
            else if (num % 3 == 0)
            {
                num = num / 3;
                multiple.Add(3);
            }
            else
            {
                multiple.Add(num);
                break;
            }
        }
        return multiple;
    }
}

테스트 1 〉 통과 (1.70ms, 31.2MB)
테스트 2 〉 통과 (1.69ms, 31.1MB)
테스트 3 〉 실패 (1.71ms, 31.2MB)
테스트 4 〉 통과 (1.69ms, 31.2MB)
테스트 5 〉 통과 (1.82ms, 31.2MB)
테스트 6 〉 통과 (1.68ms, 31.1MB)
테스트 7 〉 통과 (1.74ms, 30.7MB)
테스트 8 〉 통과 (1.80ms, 31.2MB)
테스트 9 〉 실패 (1.74ms, 31MB)
테스트 10 〉 통과 (1.73ms, 31.2MB)
테스트 11 〉 실패 (1.79ms, 30.8MB)
테스트 12 〉 실패 (1.84ms, 30.9MB)
테스트 13 〉 실패 (1.94ms, 31.4MB)
테스트 14 〉 실패 (1.98ms, 31MB)
테스트 15 〉 실패 (1.82ms, 31.3MB)
테스트 16 〉 실패 (1.88ms, 31.2MB)

...진짜 어떻게든 쥐어 짜내서 코드 실행까진 통과가 되었는데 테스트에서 박살이 나고야 말았다. 테스트 케이스 값이라도 알려주면 수정을 시도라도 해볼텐데 보안 상의 이유로 어렵단다. 이게 무슨; 내일 튜터님께 달려갈 예정

📌팀 프로젝트 발표 자료










📌1인 개발자의 개발로드맵 세션

🤸🏻‍♀️Feedback

0개의 댓글