본문 바로가기
Algorithm/JavaScript

[배열탐색] 가위바위보

by _sweep 2021. 12. 9.

자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.

 

 

 

 

📋 문제

A와 B 두 사람이 가위바위보 게임을 한다.

총 N번의 게임을 하여 A가 이기면 A, B가 이기면 B, 비기면 D를 출력한다.

가위, 바위, 보의 정보는 순서대로 1, 2, 3으로 한다.

두 사람의 N번의 게임 정보가 주어지면 각 회의 결과를 출력한다.

 

👉 입력

첫번째 입력으로 A가 낸 가위, 바위, 보의 정보가 N개 주어진다.

두번째 입력으로 B가 낸 가위, 바위, 보의 정보가 N개 주어진다.

 

 

👈 출력

각 줄에 각 회의 결과를 출력한다.

 

 

📝 풀이

 

function solution(a, b) {
    let answer = [];
    for (let i = 0; i < a.length; i++) {
        if (a[i] === b[i]) answer.push("D");
        else if (a[i] - b[i] === 1 || a[i] - b[1] === -2) answer.push("A");
        else answer.push("B");
    }

    return answer.join('\n');
}

let a = [2, 3, 3, 1, 3];
let b = [1, 1, 2, 2, 3];
console.log(solution(a, b));

 

위의 예제를 보면

A가 낸 정보 = [2, 3, 3, 1, 3]

B가 낸 정보 = [1, 1, 2, 2, 3] 이다.

 

이것을 가위, 바위, 보로 치환하자면

A가 낸 정보 = [바위, 보, 보, 가위, 보]

B가 낸 정보 = [가위, 가위, 바위, 바위, 보] 이다.

 

즉, 각 회의 결과는 [A, B, A, B, D] 이다.

 

for문을 돌며 a와 b에서 같은 인덱스의 요소를 비교한다고 했을 때,

  1. 비긴 경우 => a[i]와 b[i]의 값은 동일하다.
  2. A가 이긴 경우 => 가위, 바위, 보를 숫자로 치환했을 때 a[i] - b[i]의 값이 1이 되거나 -2일 경우이다.
  3. B가 이긴 경우 => 위 두 경우를 제외한 나머지의 경우이다.

이를 if문으로 각 조건을 분리한 후 각 조건에 해당할 때 알맞은 결과를 answer라는 배열에 넣어준다.

출력 예시가 각 줄에 각 회의 승자를 출력하는 것이므로 답이 담긴 answer 배열의 각 요소 사이에 줄바꿈을 넣어주어 출력한다.

 

 

 

 

 

'Algorithm > JavaScript' 카테고리의 다른 글

[배열탐색] 등수 구하기  (0) 2021.12.09
[배열탐색] 점수계산  (0) 2021.12.09
[배열탐색] 보이는 학생  (0) 2021.12.09
[배열탐색] 큰 수 출력하기  (0) 2021.12.09
[프로그래머스] 모의고사  (0) 2021.12.06

댓글