관리 메뉴

솜씨좋은장씨

[BaekJoon] 15913번 : 가위 바위 보 999 (Python) (feat.ChatGPT) 본문

Programming/코딩 1일 1문제

[BaekJoon] 15913번 : 가위 바위 보 999 (Python) (feat.ChatGPT)

솜씨좋은장씨 2023. 4. 15. 14:00
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 가위 바위 보 999입니다.

코딩 1일 1문제를 시작한 이후로 문제를 풀었던 날만 세어보았을 때 오늘이 딱 999일 되는 날이어서

999가 문제 이름에 포함된 문제를 풀어보았습니다.

 

15913번: 가위 바위 보 999

채점 프로그램과 가위 바위 보를 999번 해서, 최대한 많이 이겨 보자. 채점 프로그램은 랜덤을 이용해 가위 바위 보 중 하나를 결정하며, 그 코드를 간단히 나타내면 다음과 같다. 아래 코드의 변

www.acmicpc.net

👨🏻‍💻 문제 풀이 - SOMJANG

random 의 randint 를 활용하여 0 ~ 2 사이의 숫자를 랜덤으로 출력하도록 하였습니다.

👨🏻‍💻 코드 ( Solution ) - SOMJANG

import random

def rock_scissors_paper():
    rand_nums = [random.randint(0, 2) for _ in range(3)]
    return rand_nums[random.randint(0, 2)]


if __name__ == "__main__":
    print(rock_scissors_paper())

👨🏻‍💻 결과 - 999번의 가위 바위 보중 최대 348번 승! ( 하지만 랜덤 한 결과 )

👨🏻‍💻 ChatGPT - 50% 이상 이길 수 있는 방법이 있을까!

채점 프로그램이 랜덤으로 가위바위보 중 하나를 선택하므로, 이를 50% 이상 이기는 방법은 없습니다. 그러나 이길 확률을 최대한 높이기 위해서는 다음과 같은 전략을 사용할 수 있습니다.

우선, 랜덤 함수를 이용하여 999번의 가위바위보를 실행하고 그 결과를 저장합니다. 그런 다음, 상대방이 어떤 선택을 하는 경향이 있는지를 분석합니다. 예를 들어, 상대방이 이전에 가위를 냈다면, 다음에는 보나 바위를 내는 경향이 높을 것입니다.

이러한 경향을 파악한 후, 그에 맞게 자신의 선택을 조정합니다. 예를 들어, 상대방이 이전에 가위를 냈다면, 자신은 바위나 보를 선택하는 것이 좋습니다. 이를 반복하여 상대방의 선택을 예측하고 이에 맞게 선택한다면 이길 확률을 높일 수 있습니다.

하지만 이 또한 완전한 이길 수 있는 방법은 아니며, 상대방의 선택이 랜덤이기 때문에 이길 확률이 항상 50% 이상이 되는 것은 아닙니다. 따라서, 50% 이상 이길 수 있는 가위바위보 코드는 존재하지 않습니다.

-> ChatGPT 에게 더 많이 이길 수 있는 방법이 있을까? 라고 물어보니 전략을 알려주었습니다.

-> 아쉽게도 백준 문제는 매번 새롭게 랜덤한 값을 뽑기 때문에 이 방법을 실행해볼 수는 없었습니다.

읽어주셔서 감사합니다.

 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments