2021/12/23) 3. 가위바위보 [1,2차원 탐색]

굥굥이·2021년 12월 23일
0
post-thumbnail

1. 문제

<가위바위보>
: A,B 두 사람이 가위바위보 게임을 하는데,
A가 이기면 A를 출력하고, B가 이기면 B를 출력한다. 비길 경우에는 D를 출력한다.
가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정한다.
두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성한다.

2. 해결 방법

  1. 가위바위보는 결과가 총 3개밖에 없다.
    비길 때(a[i]===b[i]) / 이길 때 / 질 때
  2. a를 기준으로 하여 코드를 짜면 되는데,
    먼저 a가 이기는 경우를 알아보자.
    a가 1일 땐 b가 3이여야 a가 이긴다.
    a가 2일 땐 b가 1이여야 a가 이긴다.
    a가 3일 땐 b가 2이여야 a가 이긴다.
  3. 그리하여 if문을 이용하여, 짜면 된다.
    비길 땐 'D' 출력, a가 이길 땐 'A'출력, b가 이길 땐 'B'출력.
    그러므로 위의 두 상황이 아닐 땐(else), 'B'출력!
    => 정리하면, 비기는 경우와 a가 이기는 경우만 생각하면 된다!!!

3. 정답

        <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>

4. 내 코드와 비교 그리고 칭찬과 반성

문제를 이해하긴 했는데, 가위 바위 보 숫자가 너무 헷갈렸고, 멍청하게 if-else/if-else 이런 식으로 반복해서 이상하게 짰다. 모든 경우를 하나하나씩 처리하려고 했던 게 잘못이었다. 하다가 아닌 거 같아서 다 지웠다. 아무튼 일단 멍청한 코드를 짜더라도 꼭 해결하고 싶어서, a-b의 결과값으로 짰다. 코드는 정말 멍청이코드긴 하지만, 포기하지 않고 했다는 거에 의의를 두며.. 잘했다.

      <script>
          function solution(a, b){      
          //1 vs 2 => 2 / 1  vs 3 => 1 / 2 vs 3 => 3 //이런 식으로 짤때부터 노가다의 느낌이...
          //9가지의 경우가 있다. 비길때도 있다.  
          let answer = "" ;
          for(let i = 0; i < a.length; i ++){
              let result = a[i] - b[i];
              if(result === 0) answer += "D";
              else if(result === 1 || result === -2) answer += 'A';
              else if(result === -1 || result === 2) answer += 'B';
          }
          return answer;
          }
          let a=[2, 3, 3, 1, 3];
          let b=[1, 1, 2, 2, 3];
          console.log(solution(a, b));
      </script>

ㅋㅋ.. 진짜 초딩인가..

profile
아자아자 파이띵굥!

0개의 댓글