알고리즘 - 스무고개

KDG·2021년 5월 19일
0

스무고개

스무고개 : 질문을 통해서 답을 맞추는 놀이

* 문제

1000이하의 자연수 nn을 아무거나 하나 생각할테니, 스무고개 놀이를 시작해보자.
여기서 아무거나는 랜덤의 숫자를 얘기한다.

  • 문제의 정의
    랜덤의 숫자 nn을 맞춰보자!

  • 문제의 분석

    • 랜덤의 숫자를 난수라고 부르고 파이썬에서 난수를 구하는 방법은 random 모듈의 randint(a, b) 함수를 사용한다.
        import random
  
        answer = random.randint(1, 1000)  # 1이상이고 1000이하인 난수
  • 답을 구하는 방법
    • 답의 범위를 좁혀가는 방법 : 1부터 1000이라고 했을 때 범위의 중간 값을 구하고 중간 값보다 큰 지 확인해서 범위를 좁혀 나간다.
        start = 1
        end = 1000
        
        mid = (start + end) // 2   # 중간 값


스무고개 답 구하기

import random

def guess(answer):
    start = 1
    end = 1000
    
    while start < end:  # 시작값과 끝값의 범위를 좁혀나가 둘의 값이 같아지거나 start 값이 커지면 반복을 종료한다.
        mid = (start + end) // 2   # 중간값을 구한다.
        if mid < answer:      # 중간값과 난수를 비교해서 범위를 좁혀나간다.
            start = mid + 1   # 중간값보다 난수값이 크면 start값을 좁히고
            
        else:
            end = mid         # 중간값보다 난수값이 작으면 end값을 좁힌다. 이 과정을 계속 반복
            
    return start

answer = random.randint(1, 1000)
print(answer)
print(guess(answer))

->
538
538






** 출처
  • 주니온TV 아무거나연구소 - 코린아, 코딩하자 (with 파이썬)

0개의 댓글