이렇게 풀어도 될까요...?
190
작성한 질문수 8
function solution(n = 0, arr = []) {
let answer = [];
const sortedArr = [...arr].sort((a, b) => b - a);
answer = arr.map((val) => sortedArr.indexOf(val) + 1);
return answer;
}
console.log(solution(5, [76, 92, 92, 100, 76])); // 4 2 2 1 4
막 2중 for문을 돌릴지, 돌리게 된다면 동일 점수 사람끼리 같은 등수를 해주는 조건문 이것저것 생각하다가 이렇게 한번 작성해서 돌려봤는데 여러 케이스에 부합하는 것 같아서 여쭤봅니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
tmdwhd319님, 제시하신 자바스크립트 코드는 주어진 배열에서 각 요소의 순위를 구하는 방식으로, 문제의 요구사항을 충족하는 효과적인 솔루션이 될 수 있습니다. 다만, sort() 함수가 사용된 후, map()과 indexOf()를 통해 순위를 계산하므로, 같은 점수를 가진 요소에 동일한 순위를 부여하는 부분도 잘 처리하고 있습니다.
이 코드는 입력 배열의 각 요소값에 대해 정렬된 배열에서의 인덱스(즉, 순위)를 찾아 반환하며, 같은 값의 인덱스는 같게 나타나 동일 점수에 대하여 같은 순위를 부여하는 로직을 구현하고 있습니다. 그러나, 동일한 값이 여러 개 있을 경우 indexOf() 메서드가 첫 번째로 발견된 요소의 인덱스를 반환하기 때문에, 효율적인 측면에서는 좀 더 최적화할 여지가 있습니다. 예를 들어, 크기가 매우 큰 배열의 경우, indexOf() 메서드의 사용은 성능 저하의 원인이 될 수 있습니다.
또한, sort() 함수는 기본적으로 안정 정렬(stable sort)이 아닐 수 있으므로(브라우저 혹은 자바스크립트 엔진에 따라 다름), 같은 값을 가진 요소의 상대적인 순서가 입력 배열에서의 순서를 보장하지 않을 수도 있습니다. 이는 주로 실제 운영 환경에서 문제가 될 수 있으므로, 알고리즘 이해 목적의 경우에는 현재 방식도 충분히 유용합니다.
결론적으로, 여러분이 제시한 코드는 문제를 해결하는 데 있어서 유효하지만, 실제 프로덕션 환경에서의 사용을 고려한다면 성능과 정렬의 안정성을 고려한 추가적인 최적화가 필요할 수 있습니다.
continue를 사용하는 이유
0
79
2
정렬 가능 여부 판단하기
0
64
2
알고리즘 학습법 관련해서 질문드립니다.
0
86
1
코드 리뷰 부탁드립니다!
0
90
1
indexOf를 사용해서 풀어보았습니다 !!
0
68
1
저는 이런식으로 구현 해보았습니다 !!
0
64
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
99
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
63
1
영상 보기 전에 직접 풀어봤습니다.
0
74
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
134
2
정규표현식으로 처리해도 상관없나요 ?
0
120
2
3칸씩 건너뛸 수 있을 경우
0
125
2
강의에 대해 질문있습니다.
0
135
2
Object와 Set을 이용해 풀어봤습니다.
0
117
2
이렇게 해도 되나요?
0
102
2
선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.
0
145
2
이렇게 풀어도 괜찮을까요?
0
138
1
이렇게 풀어도 괜찮을까요?
0
112
1
모든 아나그램 찾기에서 시간복잡도
0
98
1
코드리뷰 부탁드립니다.
0
130
1
for loop 탈출은 return 문으로 해도 되지 않나요?
0
133
1
투포인트알고리즘으로 풀어봤습니다.
0
142
0
코드 리뷰 부탁드립니다.
0
120
1
코드 맞게 작성한 거 아닌가여??
0
146
1





