Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

joyful

[Javascript] 진료순서 정하기 - 프로그래머스 본문

프로그래머스

[Javascript] 진료순서 정하기 - 프로그래머스

조이풀한 개발자 2024. 4. 12. 15:27

문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/120835

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

문제


 

 

 

풀이

//기존 emergency = [3, 76, 24]

function solution(emergency) {
  let sorted= [...emergency].sort((a,b)=>b-a) //[ 76, 24, 3 ]
  return emergency.map((num)=> num=sorted.indexOf(num)+1); //[ 3, 1, 2 ]
}

 

 

1) emergency 배열의 값을 sort() 함수를 이용해 내림차순으 재정렬 하여 새로운 sorted 배열을 만든다.

*이 때, 스프레드연산자로 기존 emergency 배열은 건드리지 않도록 한다. 

 

2) 기존 emergency 배열을 num 인자를 받는 map()으로 순회하여 sorted 배열에서 indexOf() 값이 위치한 인덱스를 찾는다.

 

3) 응급도 순서가 1부터 시작하기 때문에 sorted 배열의 num의 인덱스 값에 1을 더한 값을 emergency의 num으로 변경한다.

 

 

 


 

 

TIL

내림차순 숫자 정렬: arr.sort((next , prev) => prev - next)

 

  • .sort()는 배열을 문자열 타입으로 간주하고 비교하기 때문에 숫자를 비교하려면 비교함수를 사용해야 한다.
  • 비교함수의 기본 문법은 arr.sort([compareFunction]) 으로 [compareFunction] 부분을 정의해주면 된다.
  • [compareFunction] 에 함수를 지정하면 아래의 값 중 하나가 반환된다. 
    • 첫 번째 인수가 두 번째 인수보다 작을 경우 - 값
    • 두 인수가 같을 경우 0
    • 첫 번째 인수가 두 번째 인수보다 클 경우 + 값

  • 반환값이 -일 때만 변경이 일어난다.

 

코드예제

-삼항연산자 쓸 경우

let someNumberArray = [5, 4, 3, 2, 1];
someNumberArray.sort((next, prev) => prev > next ? -1 : 0); // return [1, 2, 3, 4, 5]
// 이전 엘리먼트가 이후 엘리먼트보다 크면 순서를 바꾸기 때문에 결국 오름차순으로 정렬된다.

 

 

-오름차순

arr.sort((next, prev) => next - prev)
//prev(앞에 있는 값)가 더 클 때만 next - prev의 결과로 음수가 나온다. 
//앞에 있는 값이 더 클 때 변경이 일어나니 뒤에 있는 큰 값이 앞으로 오게되며 오름차순으로 정렬된다.

 

 

-내림차순

arr.sort((next, prev) => prev - next)
//next(뒤에 있는 값)이 더 클 때만 prev - next 의 결과로 음수가 나온다.
//뒤에 있는 값이 클 때 변경이 일어나기 때문에 큰 값은 뒤로 가고 작은 값은 앞으로 오게되어 내림차순으로 정렬된다.

 

 

참고: https://velog.io/@saemileee/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Javascript-%EC%A7%84%EB%A3%8C-%EC%88%9C%EC%84%9C-%EC%A0%95%ED%95%98%EA%B8%B0https://velog.io/@jakeseo_me/Javascript-Sort%ED%95%A8%EC%88%98%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9E%A1%EC%A7%80%EC%8B%9Dhttps://dudmy.net/javascript/2015/11/16/javascript-sort/