입력받은 배열의 등수를 구하시오
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
선언 - 새로운 배열을 arr.length의 길이만큼, 모양은 숫자가 들어갈거라서 1을 선언
- 구분을 총 5번을 해야해서 0부터 arr.length(4)까지 반복문이 돌아가고
한번 루프가 돌면 i가 i+1이 된다.저거 i++도 되...나? 안돼! - 그리고 비교가 시작된다.
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]이 출력된다.
그리고 좀 보기 좋게 삼항연산자를 사용했는데, 지금 falsy 값이 쓰레기값이라서....
그냥 if문으로
if(arr[b] > arr[i]){
answer[i]++
}
이쪽이 코드 리딩이 더 좋다고 생각한다
Author And Source
이 문제에 관하여(입력받은 배열의 등수를 구하시오), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yukina1418/입력받은-배열의-등수를-구하시오저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)