STUDY/[ JavaScript ]

JS 함수[sort, reduce, join, map, reverse, split]

Lim임 2025. 9. 3. 05:36

01.

코딩테스트문제 > 연습문제 > 자연수 뒤집어 배열로 만들기


문제 설명

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

 

제한 조건

  • n은 10,000,000,000이하인 자연수입니다.

입출력

 

 

다른 사람의 풀이 

solution=(n)=>{
    return((n+"").split("").reverse().map((v)=>parseInt(v)));
}

 

(n+"")

     숫자로 들어오는 n을 문자열로 변환하기 위해 String(n)을 사용할 수도 있지만, 자바스크립트의 특성상 (n+"")을 붙이면 자동으로 변환된다!!

 

풀이 해설

split함수를 통해 ["1","2","3","4","5"]배열로 만들고, reverse()함수를 통해 뒤집는다.

map함수를 통해 배열안에 있는 인수를 모두 int로 변환하여 

return 한다.

 

 

함수 설명


1. split함수문자열을 일정한 구분자로 잘라서 배열로 저장

    사용법:   [  ]<필수아님

string.split ( [*separator] ,  [*limit] )

파라미터를 입력하지 않는 경우 => 원본 문자열 그대로 한칸짜리 배열에 저장한다

 

* separator;구분자

    구분자를 기준으로 배열을 잘라서 저장한다

 

예) 

      separator가 " "인 경우                  => 스페이스바를 기준으로 단어들을 나눠서 배열에 저장한다  // 단어별 저장

      separator가 ""인 경우                    => 스페이스바까지 글자로 취급하여, 한 글자씩 배열에 저장한다 //글자별 저장

      separator가 "(특정기호)"인 경우 => 특정기호를 기준으로 나눠서 배열에 저장한다.

 

*limit;

    만들어질 배열의 최대치를 설정한다.

 


2. reverse함수 : 배열의 순서를 뒤집어 배열로 저장된다.

    사용법:   

array.reverse();

 

* 원본 배열이 변경됨 !! 

조심하세용


3. map함수: 배열 내 각각의 요소에 함수를 적용시킨 결과를 모아 새로운 배열을 반환한다. 

1개의 입력이 아니라, 입력받는 아이템이 많아서 함수를 각각 적용시켜줘야할 때 사용한다. (split 결과를 이용하기 딱!!)

 

    사용법: 

array.map(콜백함수([*element], [*index], [*array]){
                   // 반환값(return)을 넣으면 새로운 배열의 요소가 됨
}
,[*thisArg]);
es6 문법사용)
array.map(([*element], [*index], [*array])=>[*thisArg]);

 

* element  ; 현재 요소

* index ; 현재 요소의 인덱스(0부터)

* array ; 원래 배열 

* thisArg ;

     콜백함수를 사용할 때 this로 사용되는 값 (Argument)

 

순서대로 적용이라 element만 사용하는 경우 (v) (n)등 다양한 변수명을 사용하기도 함!

 

 

 

 


02.

코딩테스트문제 > 연습문제 > 자릿수 더하기


문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.

예를들어 N = 123이면 1 + 2 + 3 = 6 return 하면 됩니다.

 

제한 조건

  • N의 범위 : 100,000,000 이하의 자연수

입출력 

 

입출력 예 설명

 

입출력 예 #1

문제의 예시와 같습니다.

 

입출력 #2
9 + 8 + 7 = 24이므로 24 return 하면 됩니다.

 

 

다른 사람의 풀이 

solution=(n)=>{
    return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}

 

(n+"")

     숫자로 들어오는 n을 문자열로 변환하기 위해 String(n)을 사용할 수도 있지만, 자바스크립트의 특성상 (n+"")을 붙이면 자동으로 변환된다!!

parseInt()  -> map(Number)로도 사용 가능하다!!

     

풀이 해설

split함수를 통해 ["1","2","3"] 배열로 만들고,

reduce()함수를 각 문자를 숫자로 변환하고 acc에 누적한 값을 return한다.

 

 

 


함수 설명


1. reduce함수:  배열 내 각각의 요소함수를 적용시킨 결과값반환한다. (map함수와는 뱉는 자료형이 다르다)

!!누적 계산을 할 때 자주 사용된다!!

 

    사용법:

array.reduce(콜백함수(accumulator, currentValue, [*Index], [*array]){
                     // 반환값(return)을 넣으면 다음 누적값(accumulator)을 만든다.
},[*initialValue]);
es6 문법사용)
array.reduce((accumulator, currentValue, [*Index], [*array]))=>콜백함수,[*initialValue]);

 

* accumulator ; 누적값,

      콜백함수의 반환값(return)을 누적한 값이다

* currentValue ; 현재 요소 값

* Index ; 현재 요소의 인덱스

* array ; 호출한 배열

* initialValue ; 초기값 (없으면 배열 첫 번째 요소가 기본 시작값이 된다)

 

*콜백함수가 반환하는 값은 순회중에 accumulator에 누적되어 최종적으로 하나의 값을 반환한다.

 

 

 

 


03.

코딩테스트문제 > 연습문제 > 정수 내림차순으로 배치하기


문제 설명

함수 solution 정수 n 매개변수로 입력받습니다. n 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n 118372 873211 리턴하면 됩니다.

 

제한 조건

  • n 1이상 8000000000 이하인 자연수입니다.

입출력 

 

 

다른 사람의 풀이 

solution=(n)=> {
    return parseInt((n + '').split('').sort((a, b) => b - a).join(""));
}

 

(n+"")

     숫자로 들어오는 n을 문자열로 변환하기 위해 String(n)을 사용할 수도 있지만, 자바스크립트의 특성상 (n+"")을 붙이면 자동으로 변환된다!!

 

풀이 해설

문자열은 sort가 안되니 split함수를 통해 ["1","1","8","3","7","2"] 배열로 만들고,

sort함수를 통해 내림차순 정렬을 진행한다!! 

출력값이 숫자라서 join함수를 통해 문자열을 합치고 parseInt로 숫자로 변환한다. 

 

 


함수 설명


1. sort함수 :   배열을 정렬하기 위해 사용한다.

 

   사용법: 

array.sort([compareFunction]);

array.sort((a, b)=>{
        return 오름차순식/내림차순식;
}

 

파라미터가 입력하지 않는 경우 => 배열의 요소들은 문자열로 취급되며 유니코드 값 순서대로 정렬된다.

 

*compareFunction ;  비교함수, 정렬하기 위해 요소들을 비교해주는 비교함수다.

 

array.sort((a, b) => a - b); // 오름차순

array.sort((a, b) => b - a); // 내림차순

 

* return 값이 0보다 작으면 (-, 음수, return < 0) => a가 b보다 앞에 온다

* return 값이 0보다 크면     (+, 양수, return >0) => b가 a보다 앞에 온다

* return ===0                                                      => 순서 그대로 유지

 


1. join함수 :   배열의 모든 요소들을 연결하나의 문자열로 만든다

   사용법:

array.join([separator])

 

파라미터를 입력하지 않는 경우 => 원소들의 쉼표 구분한다 / 출력결과: 요소1,요소2,요소3 

 

* separator;구분자

    구분자를 기준으로 배열을 합쳐서 저장한다.

 

* separator가  ''인 경우 ( arr.join('') )      => 출력결과: 요소1요소2요소3

* separator가  '-'인 경우 ( arr.join('-') )  => 출력결과: 요소1-요소2-요소3

 

 

 

중요한 점


 

1. 아는 함수라고 아무때나 사용할 수 있는게 아니라 함수가 사용할 수 있게,

    배열이나 문자열처럼 해당되는 자료형으로 전처리하는 과정이 중요하다는 걸 느꼈다.

2. map은 "모든 요소 변환", reduce는 "누적", sort는 "정렬" 하는 함수다!!

3. 함수는 개념을 완벽히 익히기보다 자주 사용하여 익숙해지는 것이 더 도움되는 것 같다.(물론 개념을 완벽히 익히는 것도 중요하다)