본문 바로가기

프로그래밍/기타

프로그래머스 - 위장 (C#)

728x90
반응형
using System.Linq;
using System.Collections.Generic;

public class Solution
{
        public int solution(string[,] clothes)
        {
            Dictionary<string, List<string>> wearDic = new Dictionary<string, List<string>>();
            for(int i = 0; i < clothes.GetLength(0); i++)
            {
                if(!wearDic.ContainsKey(clothes[i, 1]))
                	wearDic[clothes[i, 1]] = new List<string>();
            }
            
            for(int i = 0; i < clothes.GetLength(0); i++)
                wearDic[clothes[i, 1]].Add(clothes[i, 0]);
            
            int answer = 1;
            foreach (var wear in wearDic)
            {
                answer *= wear.Value.Count() + 1;
            }
            answer--;
            return answer;
        }
}

이번 프로그래머스 문제를 풀면서 상당히 충격을 받았다.

위 코드는 다른분께서 풀이해주신걸 참고해서 한건데 나혼자 풀었을때와는 차이가 컸다.

나는 List를 이용해서 아래처럼 조합을 만들고 이 조합의 갯수를 더했는데

A

A -> B

A -> B -> C

A -> C

B

B -> C

C

 

설마 이런 유형의 문제에 공식이 존재할줄은 생각도 못 했는데 생각보다 간단한 공식이 있었다.

(A옷의 가지수 + 1) * (B옷의 가지수 + 1) - 1 = 서로 다른 옷의 조합의 수가 성립

 

참고로 저 코드블록에 있는 내용의 반 밖에 안되는 코드로도 구현이 가능하더라..

 

 

다람쥐와 포동포동이

 

 

 

 

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관

chipmunk-plump-plump.tistory.com

반응형