2-3) 가위 바위 보

김예지·2021년 8월 26일
0

문제

A, B 두 사람이 가위바위보 게임을 합니다. 총 N번의 게임을 하여 A가 이기면 A를 출력하고, B가 이기면 B를 출력합니다. 비길 경우에는 D를 출력합니다.
가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정하겠습니다.
예를 들어 N=5이면

두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램 을 작성하세요.

[입력설명]
첫 번째 줄에 게임 횟수인 자연수 N(1<=N<=100)이 주어집니다. 두 번째 줄에는 A가 낸 가위, 바위, 보 정보가 N개 주어집니다. 세 번째 줄에는 B가 낸 가위, 바위, 보 정보가 N개 주어집니다.
[출력설명]
각 줄에 각 회의 승자를 출력합니다. 비겼을 경우는 D를 출력합니다.

입력예제 1

5
23313
11223

출력예제 1

A
B
A
B
D


문제 풀이

예습 이론

  • String으로 리턴해야 할 경우, let answer=""와 같이 초기화한다.
  • if~ else if~ else~ 조건문을 작성할 때에는, else에 긴 조건의 코드가 들어갈 수 있도록 하면 if~ else if~의 코드를 최대한 줄일 수 있다.(else는 앞의 조건을 만족하지 않는 것 모두 해당하기 때문에, 조건을 따로 적지 않아도 된다.) 만약, else에 짧은 코드를 넣으면 if~ else if~ 에서 많은 코드를 작성해야한다.

코드

1차원 탐색을 사용한다. for문 한번만으로도 문제를 해결할 수 있다.

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(a, b){         
                let answer=""; //string으로 리턴
                for(let i=0; i<a.length; i++){
                    if(a[i] === b[i]) answer+='D\n'; //비기는 경우
                    else if(a[i]===1 && b[i]===3) answer+='A\n'; //A가 이기는 경우
                    else if(a[i]===2 && b[i]===1) answer+='A\n';
                    else if(a[i]===3 && b[i]===2) answer+='A\n';
                    else answer+='B\n'; //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>

결과

A
B
A
B
D

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 9월 10일

9/10
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]) answer+='D\n';
                    //a가 이길 경우
                    else if(a[i]===1 && b[i]===3 || a[i]===2 && b[i]===1 || a[i]===3 && b[i]===2) answer+='A\n';
                    //b가 이길 경우
                    else answer+='B\n';
                }
                return answer;
            }
            let a=[2, 3, 3, 1, 3];
            let b=[1, 1, 2, 2, 3];
            console.log(solution(a, b));
        </script>
    </body>
</html>
  1. answer=''이면, answer에 x를 삽입하고 싶을 때 answer+=x을 해야한다.
    answer=[]이면, answer.push(x)를 해야한다.
답글 달기