자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.
📋 문제
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에서 같은 인덱스의 요소를 비교한다고 했을 때,
- 비긴 경우 => a[i]와 b[i]의 값은 동일하다.
- A가 이긴 경우 => 가위, 바위, 보를 숫자로 치환했을 때 a[i] - b[i]의 값이 1이 되거나 -2일 경우이다.
- 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 |
댓글