<가위바위보>
: A,B 두 사람이 가위바위보 게임을 하는데,
A가 이기면 A를 출력하고, B가 이기면 B를 출력한다. 비길 경우에는 D를 출력한다.
가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정한다.
두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성한다.
- 가위바위보는 결과가 총 3개밖에 없다.
비길 때(a[i]===b[i]) / 이길 때 / 질 때- a를 기준으로 하여 코드를 짜면 되는데,
먼저 a가 이기는 경우를 알아보자.
a가 1일 땐 b가 3이여야 a가 이긴다.
a가 2일 땐 b가 1이여야 a가 이긴다.
a가 3일 땐 b가 2이여야 a가 이긴다.- 그리하여 if문을 이용하여, 짜면 된다.
비길 땐 'D' 출력, a가 이길 땐 'A'출력, b가 이길 땐 'B'출력.
그러므로 위의 두 상황이 아닐 땐(else), 'B'출력!
=> 정리하면, 비기는 경우와 a가 이기는 경우만 생각하면 된다!!!
<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>
문제를 이해하긴 했는데, 가위 바위 보 숫자가 너무 헷갈렸고, 멍청하게 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>
ㅋㅋ.. 진짜 초딩인가..