작성
·
8
0
안녕하세요! 강의 보면서 복습도 할 겸, 열심히 지식을 얻어가고 있습니다.
아무튼, 본론으로 돌아가서 가위바위보 규칙을 생각하고 두 사람의 결과값에 따라 차이를 구하고 분기를 나눠보았습니다.
우선 가위 ( 1 ), 바위 ( 2 ) , 보 ( 3 )
비기는 경우 = 0
가위와 바위의 차이 = 1
바위와 보의 차이 = 1
가위와 보의 차이 = 2
이렇게 숫자로 규칙을 작성하고 보니, 큰 수와 작은 수를 정렬하고 서로의 차이를 구하면 분기를 나눌 수 있을 거 같았습니다.
따라서, 차이가 1인 경우엔 큰 수를 가진 사람이 이기게 되고 차이가 2인 경우엔 작은 수를 가진 사람이 이기도록 설정할 수 있을 거 같았습니다.
무승부의 경우에는 차이가 0이고 서로의 값이 같다면 무승부로 처리하면 되기에 따로 처리하고 아래처럼 작성하였습니다.
function solution(n, A, B) {
let answer = "";
for (let i = 0; i < n; i++) {
const [a, b] = [A[i], B[i]];
const diff = Math.max(a, b) - Math.min(a, b);
if (diff === 0) {
answer += "D\n";
}
if (diff === 1) {
if (a > b) {
answer += "A\n";
} else {
answer += "B\n";
}
}
if (diff === 2) {
if (a > b) {
answer += "B\n";
} else {
answer += "A\n";
}
}
}
return answer;
}
console.log(solution(5, [2, 3, 3, 1, 3], [1, 1, 2, 2, 3]));
이 경우에 시간복잡도가 커지지만, 두 사람의 데이터만 처리하면 될 것이라 판단하고 괜찮을 거 같다고 생각하여 작성해 보았는데 ..
만일 코테에서 작성한다면 시간 초과라던가 그런 문제가 있을 수 있을까요?
답변