2차원 배열을 하나도 모를때는 지옥을 보는 것 같았는데
좀 만나봤더니 그나마...그나마 감이 잡힌다.
아래는 코드
function takeRank(arr) { let i = 0; let answer = Array.from({ length: arr.length }, () => 1); while (i < arr.length) { arr.map((a, b) => {return arr[b] > arr[i] ? answer[i]++ : arr;}); i += 1; } return answer; } const arr = [87,89,92,100,76] takeRank(arr)
지금까지 문제들은 이중배열의 구조를 사용하더라도 그냥 새로 배열 만들어서 값을 출력했는데
이번에는 구조가 조금 다르기도 했고
Array.from()으로 새로운 배열
을 만들라는게 조건이여서 새로 만들어서 진행을 했다
i = 0
선언while (0 < arr.length) {
arr.map((87, 0) => {return 87 > 87 ? answer[0]++ : arr;});
arr.map((89, 1) => {return 89 > 87 ? answer[0]++ : arr;});
arr.map((92, 2) => {return 92 > 87 ? answer[0]++ : arr;});
arr.map((100, 3) => {return 100 > 87 ? answer[0]++ : arr;});
arr.map((76, 4) => {return 76 > 87 ? answer[0]++ : arr;});
i += 1;
}
answer = [4,1,1,1,1] // 3번의 true가 실행됐다.
while (1 < arr.length) {
arr.map((87, 0) => {return 87 > 89 ? answer[1]++ : arr;});
arr.map((89, 1) => {return 89 > 89 ? answer[1]++ : arr;});
arr.map((92, 2) => {return 92 > 89 ? answer[1]++ : arr;});
arr.map((100, 3) => {return 100 > 89 ? answer[1]++ : arr;});
arr.map((76, 4) => {return 76 > 89 ? answer[1]++ : arr;});
i += 1;
}
answer = [4,3,1,1,1] // 2번의 true가 실행됐다.
while (2 < arr.length) {
arr.map((87, 0) => {return 87 > 92 ? answer[2]++ : arr;});
arr.map((89, 1) => {return 89 > 92 ? answer[2]++ : arr;});
arr.map((92, 2) => {return 92 > 92 ? answer[2]++ : arr;});
arr.map((100, 3) => {return 100 > 92 ? answer[2]++ : arr;});
arr.map((76, 4) => {return 76 > 92 ? answer[2]++ : arr;});
i += 1;
}
answer = [4,3,2,1,1] // 1번의 true가 실행됐다.
while (3 < arr.length) {
arr.map((87, 0) => {return 87 > 100 ? answer[3]++ : arr;});
arr.map((89, 1) => {return 89 > 100 ? answer[3]++ : arr;});
arr.map((92, 2) => {return 92 > 100 ? answer[3]++ : arr;});
arr.map((100, 3) => {return 100 > 100 ? answer[3]++ : arr;});
arr.map((76, 4) => {return 76 > 100 ? answer[3]++ : arr;});
i += 1;
}
answer = [4,3,2,1,1] // 0번의 true가 실행됐다.
while (4 < arr.length) {
arr.map((87, 0) => {return 87 > 76 ? answer[4]++ : arr;});
arr.map((89, 1) => {return 89 > 76 ? answer[4]++ : arr;});
arr.map((92, 2) => {return 92 > 76 ? answer[4]++ : arr;});
arr.map((100, 3) => {return 100 > 76 ? answer[4]++ : arr;});
arr.map((76, 4) => {return 76 > 76 ? answer[4]++ : arr;});
i += 1;
}
answer = [4,3,2,1,5] // 4번의 true가 실행됐다.
answer
의 값을 리턴하여 [4,3,2,1,5]이 출력된다.if(arr[b] > arr[i]){
answer[i]++
}
이쪽이 코드 리딩이 더 좋다고 생각한다