인프런 커뮤니티 질문&답변

australialove19님의 프로필 이미지
australialove19

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

2. 공통원소구하기(Two Pointers Algorithm)

배열 정렬 스타일

작성

·

207

0

안녕하세요 !

기존에 배열을 정렬할 때, 화살표 함수를 사용하다가

곧장 arr1.sort()를 하니 어색해서요 !

arr1 = [1,3,9,5,2]라는 배열이 있을 때,
arr1.sort((a,b) => a-b);하는것과
arr1.sort().reverse(); 하는 것은 코딩 스타일의 차이인가요?

답변 3

3

오개념이 생길 것 같아 윗분 대답에 첨언합니다.

일단 코딩스타일의 차이가 아닙니다. 질문자님처럼 화살표 함수를 이용해서 파라미터를 제시해주는 게 더 정확한 방법입니다.

sort() 함수는 파라미터가 입력되지 않으면 유니코드 순서에 따라서 값을 정렬합니다. 그래서 한자리 숫자는 상관없지만 두 자리 이상의 숫자는 윗 분 대답처럼 결과가 나옵니다. 사전에서  'b'보다 'apple'이 먼저 오는 것과 같은 이치입니다.

해당 문제는 원소의 크기가 1에서 30000까지의 수이기 때문에 반드시 정렬 기준을 제시해주어야 합니다.

김태원님의 프로필 이미지
김태원
지식공유자

네.  제가 질문에 대해서 깊은 생각없이 답변한 것 같네요. 잘 알려주셔서 감사합니다.

두 자리 이상 숫자에  대한 정렬 내용은 "섹션7 장난꾸러기 현수영상"에서 언급은 하고 있습니다.

상세한 답변 감사드립니다 ㅎㅎ 많은 도움이 됐어요 !

짜릿한 답변이네여 ㅎㅎ 배워갑니다 :)

1

원하시는 대답이 아닐 지도 모르겠지만,,,

일의 자리 숫자만 있을 경우에는 sort()와 a - b가 차이가 없을 지는 몰라도 10의 자리 숫자 까지 포함한다면 다음과 같습니다 !! 

let a = [1, 3, 9, 5, 2, 10];

a.sort();  => [1, 10, 2, 3, 5, 9]

a.sort((a,b) => a - b); => [1, 2, 3, 5, 9, 10]

a.sort().reverse();   => [9, 5, 3, 2, 10, 1]

저도 여기에 대한 의문이 있었는데 ASCII에서 해답을 찾았어용 ㅎㅎ 답변 감사합니다 !!

1

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

아랫글을 참조하시면 좋겠습니다.

australialove19님의 프로필 이미지
australialove19

작성한 질문수

질문하기