Skip to main content

도개걸윷모 개가 나올 확률~!

이건 경우의 수 문제입니다.
(난이도는 Easy 입니다.)

어느날 갑자기 도개걸윷모중에서 개가 나올 확률을 물어본다면 무엇이라고 대답하시겠어요?? 
저한테 있었던 일이에요.

1/5 ? 음.. 아닌데.. ㅠ 갑자기 말을 못했던 기억이..

그러면 다시 정리해서 작성해보죠.

말을 다시 바꾸어서 4개의 동전이 있습니다. 
4개의 동전을 던졌을때 2개의 동전이 앞이 나오는 경우는 몇가지인가요?

동전 1개당 앞 뒤가 있으니 경우의 수는 2개이며
총 4개라고 했으니 

2*2*2*2 즉 2^4  16개가 나옵니다.
그중에 2개가 앞이 나올 경우의 수는

1. (O, O , X, X)
2. (O, X , O, X)
3. (O, X , X, O)
4. (X, O, O, X)
5. (X, O, X, O)
6. (X, X, O, O)

즉 첫번째를 포함한경우 3
2번째를 포함하고 그 이하인 경우 2
3번째를 포함하고 그 이한경우 1

총 6가지가 나옵니다. 

어렵지 않지요??

접근 1 : 모든 경우의 수를 나열한다.

접근 2 : 경우의 수를 수학적으로 계산한다.

같은 것이 있는 순열이 있습니다.  (증명은 수학의 정석 참고하시면 됩니다.)
일반적으로 계산 식은 

(총갯수!/중복이 있는 수! * 중복이 있는 수!....)
위의 예제로 다시 정리하면
4!/2!*2! = 6이 나옵니다.

이렇게 되면 아주 큰 수도 간단한 수학적 지식으로 풀 수가 있겠죠??

Comments

Popular posts from this blog

codefights smooth sailing ( CommonCharacterCount)

https://codefights.com/arcade/intro/level-3/JKKuHJknZNj4YGL32publicstaticintcommonCharacterCount(String s1, String s2) { int sum = 0; char[] as= s1.toCharArray(); char[] bs= s2.toCharArray(); int[] ias = newint[126]; int[] ibs = newint[126]; for (int i = 0; i < as.length; i++) { ias[(int)as[i]]++; } for (int i = 0; i < bs.length; i++) { ibs[(int)bs[i]]++; } for (int i = 0; i < ibs.length; i++) { sum += Math.min(ias[i], ibs[i]); } return sum; }

Given two strings, find the number of common characters between them. Example For s1 = "aabcc" and s2 = "adcaa", the output should be
commonCharacterCount(s1, s2) = 3. Strings have 3 common characters - 2 "a"s and 1 "c". Input/Output [time limit] 3000ms (java)[input] string s1 A string consisting of lowercase latin letters a-z. Guaranteed constraints:
1 ≤ s1.length ≤ 15. [input] string s2 A string consisting of lowercase latin letters a-z. Guaranteed constr…

Bucket Sort in python

I make buckets as many as size of arr
and put data.

arr = [0.897, 0.565, 0.656, 0.1234, 0.665, 0.3434] def bucketSort(arr, size): buckets = [[] for i in range(size)] # put arr in bucket for i in range(len(arr)): num = size*arr[i] buckets[int(num)].append(arr[i]) output = [] # use insertion sort for i in range(len(buckets)): insertionSort(buckets[i]) # concat all data for i in range(len(buckets)): while len(buckets[i]) > 0: output.append(buckets[i].pop(0)) return output def swap(arr, i, j): temp = arr[i] arr[i] = arr[j] arr[j] = temp def insertionSort(arr): for i in range(1, len(arr)): index= i print("index : " + str(i)) while index!=0: if arr[index] < arr[index-1]: temp = arr[index] arr[index]= arr[index-1] arr[index-1] = temp index = index-1print(arr) else …