본문 바로가기
2. 우당탕탕 개발자/2-1. 공부기록

23Dec2019 TIL

by Little Monkey 2019. 12. 24.
반응형

Today I learned :

  • toy 05, 06 

bubbleSort() 구현하기 (Array.prototype.sort() 사용하지 않고)

: bubbleSort ([1,0,-3,10]) 하면 작은 순서대로 [-3, 0, 1, 10] 의 배열을 리턴하는 함수 구현하기

 

  1. 배열의 가장 작은 숫자를 찾는다.
  2. 가장 작은 숫자를 빈 배열 'result'에 담고, 배열 내의 그 숫자는 지운다.
  3. 남은 배열의 가장 작은 숫자를 찾는다.
  4. 가장 작은 숫자를 빈 배열에 담고, 배열 내의 그 숫자는 지운다.
  5. ...... 반복
  6. 배열이 빈배열이 되면 가장 작은 숫자들을 담아왔던 배열'result'를 리턴한다.

 

var bubbleSort = function(array) {
  let result = [];
  let recurse = function(arr) {
    if (!arr.length) return result; //base : 배열 값이 0 이면 재귀 끝
    if (arr.length) {
      let findMin = arr => Math.min(...arr); //배열 내 최소값을 찾는 함수
      let min = findMin(arr); //최소값 변수 담기
      let idx = arr.indexOf(min); //최소값 인덱스 찾고 -> 배열에서 삭제
      result.push(min);
      arr.splice(idx, 1);
      return arr.length === 0 ? result : recurse(arr);
    }
  };
  recurse(array);
  return result;
};

commonCharacters () 구현하기

: 인자로 주어진 string 들이 공통으로 가지고 있는 문자열 도출하기 (공백 및 중복 허용하지 않음)

e.g.) commonCharacters('moonk ey', 'mo onabc') 는 'mon'을 리턴해야 하는 함수

 

  1. 첫번째 parameter 의 문자 하나씩를 기준으로 다른 모든 argument에 해당 문자가 포함되는지 체크한다. 
  2. 해당 문자가 포함되면 sum 에 +1 씩 가산한다
  3. 해당 문자가 모든 argument 를 다 돌고 체크가 되면 sum 이 argument 수와 일치하는지 체크한다.
  4. 해당 문자가 공백인지 체크한다.
  5. 해당 문자가 중복인지 체크한다.
  6. 모든 조건을 통과 하면 arr에 담는다.
  7. 우리가 원하는 건 배열이 아닌 하나로 연결된 문자열이기 때문에 모든 엘리먼트를 통합한 문자열을 리턴한다.

 

var commonCharacters = function(...arg) {
  let arr = [];
  for (let el of arg[0]) {
    let sum = 0;
    for (let ar of arg) {
      ar.includes(el) ? sum++ : sum;
    }
    if (sum === arg.length && el !== " " && !arr.includes(el)) {
      arr.push(el);
    }
  }
  let result = arr.join("");
  return result;
};
반응형

'2. 우당탕탕 개발자 > 2-1. 공부기록' 카테고리의 다른 글

28Dec2019 TIL  (0) 2019.12.29
24Dec2019 TIL  (0) 2019.12.24
22Dec2019 TIL  (0) 2019.12.23
20Dec2019 TIL  (0) 2019.12.21
18Dec2019 TIL  (0) 2019.12.19

댓글