상권's

TIL 22 (2021.10.28) 본문

~2022 작성 글/TIL

TIL 22 (2021.10.28)

라마치 2021. 10. 28. 20:08
-2021.10.28 오늘의 코플릿-
정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.
퀵 정렬을 구현해야 합니다.
  // 피벗을 정한다. bigger, smaller 빈배열을 만든다.
  // 피벗과 비교해서 작은 수는 smaller에 push하도록 하고
  // 피벗보다 큰 수는 bigger에 push하도록 한다.
  // smaller와 bigger을 재귀하고
  // smaller pivot bigger 순으로 배열을 합쳐서 리턴한다.

첫 수도코드 => 퀵 정렬이 pivot이라는 비교대상을 정한 후, 비교대상보다 큰 건 오른쪽, 작은 건 왼쪽으로 보내고, 왼쪽과 오른쪽도 재귀로 정렬을 하는 것이라고 구글링을 통해서 알았습니다.  새로운 배열을 만들지 않고 진행을 해보려고 했으나 그럴 경우에는 작은 쪽, 큰 쪽을 정렬 =>  피벗을 중간에 위치 => 왼편과 오른편을 slice 하지 않고 재귀

이렇게 진행이 되어야 하는 데 코드가 너무 길어질 거 같았습니다. 그래서 잘라서 진행을 하게되었습니다. 

새로운 배열을 만들지 않고 리턴할 수 있는 방법이 있는 지 추후에 알아보도록 하겠습니다.


오늘은 어제 학습했던 styled component를 활용해서 과제를 진행했습니다. 다 구현하긴 했지만, css가 많이 부족해서 과제 제출 기간인 내일까지 보충 후 내일 정리해서 블로깅하도록 하겠습니다.


스택 알고리즘 학습 1 10진수를 2진수로 변환하기.

export function decimalToBinary(decNumber) { // 10진수을 2진수로
  const remStack = new Stack();
  let number = decNumber; 
  let rem;
  let binaryString = '';

  while (number > 0) {
    rem = Math.floor(number % 2);
    remStack.push(rem); // 먼저 2로 나눈 나머지값을 넣는다
    number = Math.floor(number / 2); // 2로 나눈 수를 num으로 만들어준다.
  }
//ex) num = 10 => 10 % 2 = 0 스택에 넣어준다.
// 5 % 2 = 1
// 2 % 2 = 0
// 1 % 2 = 1
// => 스택에 넣고 빼게 되면 역순으로 1010이 되는데 이게 10을 2진수로 표현한 것이다.
  while (!remStack.isEmpty()) {
    binaryString += remStack.pop().toString();
  }

  return binaryString;
}

 

Comments