-
카테고리
-
세부 분야
프론트엔드
-
해결 여부
미해결
타입이 동점일 때 처리 방법
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문을 넣어준다던가... 어떻게 해야 할지 갈피가 안잡혀서 질문 드립니다.
답변을 작성해보세요.
4
판다코딩
지식공유자2021.04.04
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
판다코딩
지식공유자2021.04.04
안녕하세요!
말씀해주신 사안만으로는 어떤 퍼포먼스를 원하시는지 파악하기 어렵습니다.
만약 동점이 발생한다면,
동점인 두 항목을 제외하고 다른 결과를 보여주시길 원하시는 건가요?
그렇다면, 어떤 항목이 동점일 때 어떤 항목을 보여줄 것인지 미리 정해야 할 것 같습니다.
sdcpdpd1
질문자2021.04.04
안녕하세요!
호랑이와 쥐가 동점일 때는 쥐가 앞쪽(쥐는 0번째 인덱스. 호랑이는 2번째 인덱스)에 있으니 쥐를 결과로 리턴시켜주는 형태인데,
이 때 쥐도 호랑이도 아니고 아예 다른 타입의 결과인 고양이(cat, 12번째 인덱스에 새로 만든 결과)를 보여주길 원합니다!
판다코딩
지식공유자2021.04.04
한 가지만 더 여쭤봐야 될 것 같습니다.
동점일 때, 타입의 조합마다 새로운 타입을 보여줘야 하는 경우일까요?
아니면 동점인 결과가 나왔을 때만 보여줄 항목이 하나로 정해져있는 걸까요?
답변 3