• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

타입이 동점일 때 처리 방법

21.04.03 20:09 작성 조회수 177

1

안녕하세요, 우선 좋은 강의 감사합니다.

다름이 아니라 결과 알고리즘에서 만약 두가지 타입이 동점(ex. 호랑이 6, 쥐 6)일 때, 앞쪽에 있는 타입을 출력시키는 형태잖아요?

그런데 동점일 때 아예 다른 타입의 결과(ex. 고양이)를 출력시키고 싶습니다. 이럴 경우 어떤 식으로 코드를 좀 바꿔주면 될지 궁금합니다. 

function calResult(){

  console.log(select);

  var result = select.indexOf(Math.max(...select));

  return result;

}

이 부분에서 if문을 넣어준다던가... 어떻게 해야 할지 갈피가 안잡혀서 질문 드립니다.

답변 3

·

답변을 작성해보세요.

4

const endPoint = 12;
const select = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
const samePoint = 12;

function calResult(){
  let sortArray = select.sort((a,b) => {
    if(a > b){
      return -1;
    }if(a < b){
      return 1;
    }
    return 0;
  })
  if(sortArray[0] === sortArray[1]){
    return samePoint;
  } else {
    var result = select.indexOf(Math.max(...select));
    return result;
  }
}

이렇게 코딩해볼 수 있을 것 같습니다.

조금 더 생각해보면 보다 효율적이고 간결하게 코딩할 수 있을 것 같은데...!

지금 당장 떠올릴 수 있는 방법 중 가장 빠른 방법은 이 방법인 것 같습니다.

먼저, 12개의 type이 있다고 가정할 때 사용하게 될 배열의 인덱스의 최대값은 11입니다.

따라서 samePoint라는 변수를 만들고 그 변수에 12를 저장함으로써,

같은 값이 나왔을 때 12를 리턴하고자 합니다.

sortArray라는 배열은 select배열을 오름차순으로 정렬하여 생성합니다.

그리고 sortArray의 `0`번째 인덱스의 값과 `1`번째 인덱스 값이 같다면 동점이 발생한 것입니다.

따라서 사전에 정의해두었던 samePoint를 리턴하고,

그렇지 않은 경우에는 기존과 동일한 코드를 사용하면 될 것 같습니다.

1

최민준님의 프로필

최민준

2021.04.04

저도 궁금하네요 동점이면 결과 페이지에 둘 다 써넣어보고 싶네요

동점이면 둘 다 페이지에 출력하는 것은 쉽습니다.

저희가 sorting한 array의 첫번째 인덱스와 두번째 인덱스의 값이 같을 때,

두번째 인덱스를 위한 공간을 createElement로 만들어주어서 할당하면 됩니다.

다만, 이 경우에는 결과를 공유할 때 어떤 페이지를 보여줄 것인지 고민이 필요하거나

공유하는 방식을 바꾸어야 할 것 같습니다.

0

안녕하세요!
말씀해주신 사안만으로는 어떤 퍼포먼스를 원하시는지 파악하기 어렵습니다.

만약 동점이 발생한다면,

동점인 두 항목을 제외하고 다른 결과를 보여주시길 원하시는 건가요?

그렇다면, 어떤 항목이 동점일 때 어떤 항목을 보여줄 것인지 미리 정해야 할 것 같습니다.

sdcpdpd1님의 프로필

sdcpdpd1

질문자

2021.04.04

안녕하세요!

호랑이와 쥐가 동점일 때는 쥐가 앞쪽(쥐는 0번째 인덱스. 호랑이는 2번째 인덱스)에 있으니 쥐를 결과로 리턴시켜주는 형태인데,

이 때 쥐도 호랑이도 아니고 아예 다른 타입의 결과인 고양이(cat,  12번째 인덱스에 새로 만든 결과)를 보여주길 원합니다!

한 가지만 더 여쭤봐야 될 것 같습니다.

동점일 때, 타입의 조합마다 새로운 타입을 보여줘야 하는 경우일까요?

아니면 동점인 결과가 나왔을 때만 보여줄 항목이 하나로 정해져있는 걸까요?

sdcpdpd1님의 프로필

sdcpdpd1

질문자

2021.04.04

후자입니다!