위와 같이
가위, 바위, 보 를 내면
컴퓨터도 랜덤으로 가위, 바위, 보 중에 출력을 하고
승패를 출력해주는 프로그램이다.
이때, 승부를 판가름 할 때 다음과 같이 작성을 해보았다.
다음과 같이 컴퓨터 값이 a일때 유저값 a, b, c일때의 승패를 판별하고
컴퓨터 값이 b일때, 유저값 a, b, c를 판별하고 ...
이런식으로 코드를 짜면 위와 같이 코드가 길어질 수 있다.
따라서 좀 더 간편하게 승 무 패를 판별할 수 있도록 코드를 고민 해보면,
유저값 / 컴퓨터값 을
가위 1 / 1
바위 2 / 2
보 3 / 3
이라고 하면
유저 기준으로
승
무
패
로 나뉘었을 때, 두 값을 더하거나 뺐을 때, 승 무 패의 값이 각각 다르다면 그 값으로, 승 무 패를 판단 할 수 있다.
일단 더했을 때에는
유저 / 컴퓨터
무승부 일 때는 , 1/1 -> 2, 2/2 -> 4, 3/3 -> 6 ====> 2, 4, 6
승리 일 때는, 1/3 -> 4, 2/1 -> 3, 3/2 -> 5 ====> 4, 3, 5
패배 일 때는, 1/2 -> 3, 2/3 ->5, 3/1 -> 4 ====> 3, 5, 4
중복 되는 값이 발생 하며 패배인지 승리인지 무승부인지 알 수가 없다.
그렇다면 뺀 값을 확인 해보자
무승부 일 때는 , 1/1 -> 0, 2/2 -> 0, 3/3 -> 0 ====> 0
승리 일 때는, 1/3 -> -2, 2/1 -> 1, 3/2 -> 1 ====> -2, 1
패배 일 때는, 1/2 -> -1, 2/3 ->-1, 3/1 -> 2 ====> -1, 2
-1, 2 = 패배
-2, 1 = 승리
0 = 무승부
이렇게 정리 할 수 있다.
그렇다면
위 코드를 아래와 같이 간단하게 정리할 수 있다.
'끄적끄적 개발공부' 카테고리의 다른 글
# 배열로 로또번호 뽑기 (1) (0) | 2021.04.10 |
---|---|
# C++ 기초 입출력 (0) | 2021.04.07 |
# for문으로 *(별)을 출력하여 도형 만들기 (0) | 2021.04.05 |
# 근의 공식 문제 (적절한 자료형 판단) (0) | 2021.04.03 |
#ATM문제 (소수점 표현) (0) | 2021.04.03 |