JS 알고리즘 문제풀이/섹션 2. 1, 2차원 배열 탐색

3.가위바위보

crab. 2022. 1. 12. 11:37

📌강의 정리

가위바위보 정보가 숫자로 들어온다.

a배열 b배열로 받았다.

두 배열의 길이는 같기에 a.length를 써서 포문돌리면 다 돈다.

승부결과는 a입장에서만 보면 이길 수 있는 경우는 3가지이다.

1,2,3으로 이기는 경우이다.

a가 1을 내면 && b가 3을 내야한다.

마찬가지로 2,3을 간다.

그리고 else는 b가 이기는 경우

앞서 같은경우는 비기는 경우로 한다.

📌느낀점

나는 a가 이기는 경우와 b가 이기는 경우를 코딩하고 else로 비기는경우를 했는데

그러지말고 비기는경우 a가 이기는 경우하고 b가 이기는 거는 else로 하는게 더 유리한것같다.

그리고 이렇게 해서 코드를 절약하면 하드코딩으로 1,2,3 다 한줄씩 지정해준다.

나의 방식이던 둘을 뻈을때 1 && 3,1은 의미가 확장되면 안될것같으니 강사님 방법이 더 좋은 것 같다.

항상 코드에서 의미를 읽을 수 있게 하자.

//나의 코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(a, b){         
                let answer="";
                for(let i=0; i<a.length; i++){
                    if(a[i]-b[i] === 1 || (a[i] === 1 && b[i] === 3))   answer+='A';
                    else if((b[i]-a[i] === 1 || (b[i] === 1 && a[i] === 3)))    answer+='B';
                    else answer+='D';
                }

                return answer;
            }

            let a=[2, 3, 3, 1, 3];
            let b=[1, 1, 2, 2, 3];
            console.log(solution(a, b));
        </script>
    </body>
</html>
//강사님 코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(a, b){         
                let answer="";
                for(let i=0; i<a.length; i++){
                    if(a[i]===b[i]) answer+="D ";
                    else if(a[i]===1 && b[i]===3) answer+="A ";
                    else if(a[i]===2 && b[i]===1) answer+="A ";
                    else if(a[i]===3 && b[i]===2) answer+="A ";
                    else answer+="B ";
                }
                
                return answer;
            }

            let a=[2, 3, 3, 1, 3];
            let b=[1, 1, 2, 2, 3];
            console.log(solution(a, b));
        </script>
    </body>
</html>

'JS 알고리즘 문제풀이 > 섹션 2. 1, 2차원 배열 탐색' 카테고리의 다른 글

6.격자판 최대합  (0) 2022.01.13
5.등수구하기  (0) 2022.01.12
4.점수계산  (0) 2022.01.12
2.보이는 학생  (0) 2022.01.12
1.큰 수 출력하기  (0) 2022.01.12