질문있습니다

조회수 1170회

주사위 4개를 던질 때 홀수의 개수에 따라서 3개 이상은 A 1개이상 3개미만은 B 1개미만은C를 출력하는 코드를 작성해야 하는데 주사위가 4개여서 도저히 어떻게 해야 될지 모르겠어요 ㅜㅜ

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 혹시 확률과통계를 배우셨다면 이 문제는 정말 심플한 과제로 수렴합니다.

    • 주사위 눈에는 홀수가 3개 짝수가 3개 있습니다. 따라서 홀수가 나올 확률과 짝수가 나올 확률은 1/2로 동일합니다. (사실 그때문에 이 문제는 본질적으로 동전 4개 던지기 문제와 같습니다.)
    • 주사위 4개 중 어떤 것도 홀수가 안 나올 확률은 1/2 * 1/2 * 1/2 * 1/2 = 1/16입니다.
    • 주사위 4개 중 1개만 홀수고 나머지가 짝수가 나올 확률은 1/4입니다. 정확히는 4/16 지요. 홀홀홀짝, 홀홀짝홀, 홀짝홀홀, 짝홀홀홀 4가지 경우의 수.
    • 모든 주사위 던지기 사건은 독립적으로 시행되며 이 문제에서 주사위의 순서는 고려되지 않고 있으며 blah blah blah

    그러므로 질문자님이 짜야 하는 코드는:

    • 언제나 무조건 1/4 확률로 A를 출력
    • 언제나 무조건 11/16 확률로 B를 출력
    • 언제나 무조건 1/16 확률로 C를 출력

    하는 코드입니다.

    이것만으로도 주어진 요건은 깨끗하게 만족됩니다. 그리고 여기서부터는 쉽습니다. 시도해 보세요!


    혼잣말

    코딩 사이트에 올라온 코딩 질문에 수학을 운운하는 것은, 잘난체를 하자는 게 아니라, 이게 문제 해결에 관련된 것이기 때문입니다. 질문자님이 작성해야 하는 그 코드는 실은 주어진 주사위 문제를 해결하려고 작성하는 코드라는 것이죠. 그렇다면 그 문제를 어떻게 푸는지 알아내는 것이 항상 제 1단계가 되어야 합니다. 1에서 6 사이의 임의의 정수를 4번 뽑아서 그걸 각각 홀수짝수 판정하고 어찌저찌 하는 코드를 짜는 건 그 다음 단계고요.

    하지만 그 코드를 답변 드리지 않는 이유는 그게 아무리 생각해 봐도 컴퓨팅 리소스만 낭비하는 바 코드를 위한 코드이기 때문입니다. 막말로 이게 무슨 가챠겜 뽑기화면도 아니고 사용자한테 뭘 보여주라는 요건이 있는 것도 아니잖아요? 이 프로그래밍 과제는 그런 의미에서 -- 문제 해결의 핵심에 컴퓨터 공학이 거의 기여하지 않는다 -- 영 안 좋은 프로그래밍 과제입니다. 이보시오.. 교수 양반.. 이게 무슨 소리요!! 이게 수학 문제라니!!

  • pips = [2,5,3,1]
    grade = chr(65+int(len(filter(lambda x:~x%2,pips))*.5))
    print(grade) # "A"
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)