작성
·
243
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
0
안녕하세요!
말씀해주신 사안만으로는 어떤 퍼포먼스를 원하시는지 파악하기 어렵습니다.
만약 동점이 발생한다면,
동점인 두 항목을 제외하고 다른 결과를 보여주시길 원하시는 건가요?
그렇다면, 어떤 항목이 동점일 때 어떤 항목을 보여줄 것인지 미리 정해야 할 것 같습니다.
동점이면 둘 다 페이지에 출력하는 것은 쉽습니다.
저희가 sorting한 array의 첫번째 인덱스와 두번째 인덱스의 값이 같을 때,
두번째 인덱스를 위한 공간을 createElement로 만들어주어서 할당하면 됩니다.
다만, 이 경우에는 결과를 공유할 때 어떤 페이지를 보여줄 것인지 고민이 필요하거나
공유하는 방식을 바꾸어야 할 것 같습니다.