강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Jiwoo So님의 프로필 이미지
Jiwoo So

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

3. 가위바위보

두 수의 차이와 가위바위보 숫자 크기에 따라 처리했습니다.

작성

·

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]));

이 경우에 시간복잡도가 커지지만, 두 사람의 데이터만 처리하면 될 것이라 판단하고 괜찮을 거 같다고 생각하여 작성해 보았는데 ..

만일 코테에서 작성한다면 시간 초과라던가 그런 문제가 있을 수 있을까요?

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
Jiwoo So님의 프로필 이미지
Jiwoo So

작성한 질문수

질문하기