상권's
TIL 22 (2021.10.28) 본문
-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;
}
'~2022 작성 글 > TIL' 카테고리의 다른 글
TIL 24 (클로저 함수)(2021.10.30) (0) | 2021.10.30 |
---|---|
TIL 23 (2021.10.29) (0) | 2021.10.29 |
TIL 21 (storybook, CSS방법론, styled-component, Ref)(2021.10.27) (0) | 2021.10.27 |
TIL 20 (express.js, 미들웨어, 디버깅, location header)(2021.10.26) (0) | 2021.10.26 |
TIL 19 (고차컴포넌트, content-type,express.js) (2021.10.25) (0) | 2021.10.25 |
Comments