• 가위바위보

    2022. 8. 28.

    by. 카유.

    가위바위보 알고리즘은
    if문 9개로 만들어도 전혀 문제없지만
    여러 방법을 소개하고자 합니다.

    이 글에선 숫자로 바꿔서 진행하겠습니다.

     

     

    A가 이기는 경우의 수

     

    가위 = 0, 바위 = 1, 보 = 2

    같다면 무승부로 하고
    A가 이기는 경우 3가지만
    기준을 잡아서 만드는 방법입니다.

    function rspWinnerCheck(a, b) {
        if (a == b) {
            return "무승부";
        }
        // A 가위 > 보 B
        else if (a == 0 && b == 2) {
            return "A 승리";
        }
        // A 바위 > 가위 B
        else if (a == 1 && b == 0) {
            return "A 승리";
        }
        // A 보 > 바위 B
        else if (a == 2 && b == 1) {
            return "A 승리";
        }
        else {
            return "B 승리";
        }
    }

     

     

    나머지 연산자

     

    가위 = 0, 바위 = 1, 보 = 2

    가위바위보를 숫자로 바꾸고
    나머지 연산자를 써서 0~2로 순환 시켰을 때
    +1 높은게 이긴다는걸 이용한 방법입니다.

    function rspWinnerCheck(a, b) {
        if (a == b) {
            return "무승부";
        }
        else if ((a + 1) % 3 == b) {
            return "B 승리";
        }
        else {
            return "A 승리";
        }
    }

    그리고 A의 승패만 확인하고자 한다면
    A에서 B를 뺀 차이 값에서
    음수가 나오지 않게 2만 더해주었을 때
    승리: 0, 패배: 1, 무승부: 2가 나오는 방법입니다.

    function rspCheck(a, b) {
        const result = ["승리", "패배", "무승부"];
        return result[(a - b + 2) % 3];
    }

    무승부, 승리, 패배 순서로 바꾸고자 하면
    2를 더하지 않고 3을 더해주면 됩니다.

    댓글