A, B 두 사람이 가위바위보 게임을 합니다. 총 N번의 게임을 하여 A가 이기면 A를 출력하고, B가 이기면 B를 출력합니다. 비길 경우에는 D를 출력합니다.
가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정하겠습니다.
예를 들어 N=5이면,
두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요.
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(a, b) {
let answer = []
//가위 1
//바위 2
//보 3
// 이길조건
// 1.가위(1) === 보(3)
// 2.바위(2) === 가위(1)
// 3.보(3) === 바위(2)
for (let i = 0; i < a.length; i++) {
const win =
(a[i] === 1 && b[i] === 3) ||
(a[i] === 2 && b[i] === 1) ||
(a[i] === 3 && b[i] === 2)
const drow = a[i] === b[i]
if (win) {
answer.push("A")
continue
}
if (drow) {
answer.push("D")
continue
}
answer.push("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입장에서 이길조건 질조건 비길조건을 나누고, 그 조건에 대한 탐색을 한 후, 조건이 맞으면 answer라는 빈 배열에 하나하나 차곡차곡 담은 후, 리턴!
코드리뷰
a. 조건문의 참인 조건이 길어서 변수로 따로 뺌.
b. for문으로 반복문을 돌리고, 그 안에 조건들을 ealry return으로 선언함. early return으로 선언할 떄,
for + continue 조합으로 조건이 참인경우에도, 다음 인덱스로 넘어갈수 있도록 코드를 짬.
<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>