문제 13 · 가위-바위-보 프로그램
문제 13 [5점]
가위-바위-보 중 하나를 임의로 선택해서, 사용자의 입력과 비교하여 승패를 출력하는 프로그램의 의사알고리즘pseudoalgorithm을 작성(4점)하고, 이것의 시간복잡도time complexity를 계산(1점)해서 서술하시오.
풀이 및 해설
의사알고리즘
가위=0, 바위=1, 보=2 로 인코딩한다. 승패는
text
RockPaperScissors(user): // user ∈ {0,1,2}
comp ← Random(0, 2) // 컴퓨터가 임의 선택
diff ← (user - comp + 3) mod 3
if diff = 0:
return "무승부"
else if diff = 1: // user가 comp를 이기는 경우
return "승"
else: // diff = 2
return "패"판정 규칙의 근거: 각 손은 자기보다 "하나 앞"(가위→보, 바위→가위, 보→바위)을 이긴다. 이를 순환 구조로 보면 if로 아홉 가지 경우를 나열하지 않고 한 줄로 판정할 수 있다.
시간복잡도
임의 선택(난수 생성), 뺄셈, 나머지 연산, 비교가 모두 입력 크기와 무관한 상수 시간 연산이다. 반복문·재귀가 없다.
여러 판을