[프로그래머스] 카펫

박지예·2023년 11월 5일
0

코딩테스트

목록 보기
17/17

문제

    public int[] solution(int brown, int yellow)
    {
        int[] answer = new int[] { };


        List<Tuple<int,int>> list = new List<Tuple<int,int>>();     // 사각형이 될 수 있는 조건 목록

        int all = brown + yellow;		// 전체 타일 숫자

        for (int i = 2; i < all / 2; i++)		// 어차피 가로 긴거로 고정이라 절반 까지만 순회해도 필요 약수 목록은 다 구해짐 
        {
            if(all%i == 0)		// 약수 목록
            {
                Tuple<int, int> t = new Tuple<int, int>( all / i, i );
                list.Add(t);
            }
        }

        for (int i = 0; i < list.Count; i++)
        {
            Tuple<int, int> t = list[i];
            int x = t.Item1;
            int y = t.Item2;

            if((x - 2) * (y -2) == yellow)		// 가로 세로 양 옆 2씩 뺀 = 노랑 타일로 만들 수 있는 바닥
            {
                answer = new int[] { y, x };
            }
        }

        return answer;
    }
profile
언젠간 바다로 갈거야!🐋

0개의 댓글