jaeseb96   4년 전

N == 6 일 때,


1. "(dp[4] * dp[2]) + (dp[4]의 고유모양 * dp[2]) + dp[6]"의 고유모양으로 풀 수 있습니다.


하지만 앞부분에서 dp[4] * dp[2] 부분에서 dp[4]의 고유모양에 대한 계산이 이루어졌는데 다음 항에서 dp[4] * dp[2]을 왜 또 해야하는지 궁금합니다

2. 같은 N==6의 경우로 dp[4] * dp[2]의 경우는 계산되는데 왜 dp[2] * dp[4]의 경우는 하지 않나요? 중복으로 간주하고 계산하지 않는 것인가요?

betain24   4년 전

1. "(dp[4] * dp[2]) + (dp[4]의 고유모양 * dp[2]) + dp[6]"의 고유모양으로 풀 수 있습니다.

하지만 앞부분에서 dp[4] * dp[2] 부분에서 dp[4]의 고유모양에 대한 계산이 이루어졌는데 다음 항에서 dp[4] * dp[2]을 왜 또 해야하는지 궁금합니다



곱셈식이 반대로 되서 헷갈린신거 같습니다

dp[a] * dp[b] = 앞의 a칸으로 만들수 있는경우의 수 * 뒤의 b칸으로 만들 수 있는 경우의 수입니다.

따라서 dp[4] * dp[2] 는 6칸 중 앞의 4칸으로 만들 수 있는 경우의 수 * 뒤의 2칸으로 만들 수 잇는 경우의 수 입니다.

이렇게만 계산되어 버리면 뒤의 4칸을 고유 모양으로 만들 수 있는 계산이 들어가지 않습니다.

따라서 dp[2] * dp[4]의 고유모양 => 앞의 2칸으로 만들 수있수 * 뒤의 4칸으로 만들 수 있는 "고유 모양수" 를 추가하셔야됩니다.


2. 같은 N==6의 경우로 dp[4] * dp[2]의 경우는 계산되는데 왜 dp[2] * dp[4]의 경우는 하지 않나요? 중복으로 간주하고 계산하지 않는 것인가요?

중복으로 간주합니다.

dp[2] * dp[4] 를 하면 위에 써놓은 곱셈식에 의해

앞 2칸 * 뒤 4칸이 되어버립니다.

따라서 dp[2] * dp[4]와 결과가 dp[2] * dp[2] * dp[2] 만큼 중복된다고 할 수있겠네요!

1번과 비슷합니다.

설명이 거지같아서 이해가 되실지모르겠네요...

jaeseb96   4년 전

1번이 정확하게 이해가 안되는데

dp[4] * dp[2]를 진행하는 과정은 dp[6]을 계산하는 것이고


dp[6]을 계산하는 것은 dp[4]의 계산이 이미 끝났다는 것인데


dp[4]를 계산할 때 26, 27번째 라인에서 고유모양이 이미 계산되서 포함된 것 아닌가요?

betain24   4년 전

음... 

dp[4] * dp[2]를 계산할 때는 

 [()()()()()] * [()()]  모양만 계산이 되어있습니다     

앞에 4개는 고유의 모양 개수까지 포함되고 뒤의 2개는 2개로 만들 수 있는 경우만 가지고 있습니다


이렇게 되면 뒤의 4개의 고유 모양으로 만들 수 있는 경우가 계산되지않습니다. 따라서 [()()] * ([()()()()] 의 고유모양의 개수) 를 추가로 더해줘야됩니다.


댓글을 작성하려면 로그인해야 합니다.