[JavaScript] for문과 forEach문 차이
·
JavaScript
for문 예시 const array = new Array(4); for (let i = 0; i { // ... }) 차이점 동기와 비동기 for문은 동기 방식이기 때문에 오류가 나면 오류가 난 위치 이후의 작업이 동작하지 않고 멈춰버린다. 하지만 forEach문은 비동기 방식이기 때문에 멈추지 않고 동작한다. 성능 차이 forEach 문은 " 향상된 for문 " 이라고 칭하며, 가변적인 배열이나 리스트 크기를 구할 필요가 없어 복잡한 반복문에 적합하며, 인덱스를 생성하여 접근하는 for문보다 수행 속도가 빠르다. forEach문의..
[알고리즘] 문자열 압축
·
알고리즘
문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘..
[알고리즘] 로또의 최고 순위와 최저 순위
·
알고리즘
문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0, 0, 31 25라고 가정해보겠습니다...
[알고리즘] 신고 결과 받기
·
알고리즘
문제 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송한다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지 후 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k = 2(즉, 2번 이..
[알고리즘] 배열( 순차 리스트)
·
알고리즘/풀이 힌트
1. 배열 연관된 데이터를 연속적인 형태로 구성된 구조를 가진다. 배열에 포함된 원소는 순서대로 번호(index)가 붙는다. 특징 고정된 크기를 가지며 일반적으론 동적으로 크기를 늘릴 수 없다. - 자바스크립트처럼 스크립트 언어의 경우 동적으로 크기가 증감되어진다. 원하는 원소의 index를 알고 있다면 O(1)로 원소를 찾을 수 있다. 원소를 삭제하면 해당 index에 빈자리가 생긴다. 2. 배열의 요소 삭제 [1, 1, 2, 3, 5, 7, 10, 13, 34] 인 배열이 있다. 여기서 7을 제거할 경우 진행되는 방법을 보자면 1. 7이 삭제된다. => [1, 1, 2, 3, 5, ` `, 10, 13, 34] 2. 10이 앞으로 한칸 이동한다. => [1, 1, 2, 3, 5, 10, ` `, 13..
[알고리즘] 자바스크립트 9가지 코드 트릭
·
알고리즘/풀이 힌트
1. 구조 분해 할당을 이용한 변수 swap ES6의 구조 분해 할당 문법을 사용하여 두 변수를 swap 할 수 있다. let a = 5; let b= 10; [a,b] = [b,a]; console.log(a, b); // 10 5 2. 배열 생성으로 루프 제거 let sum = 0; for (let i = 5; i k + 5) .reduce((acc, cur) => acc + cur, 0); 만약 범위 루프를 함수형 프로그래밍 방식으로 사용하고 싶다면 배열을 생성해서 사용할 수 있다. Array .from(new Arr..
[React - 기초] DOM, Element
·
React/패스트캠퍼스
1. DOM? Document Object Model의 약자이며, XML이나, HTML 문서에 접근하기 위한 인터페이스라고 보면 된다. 위와 같은 계층 구조로 나타나 있으며, 자바스크립트를 사용해서 문서의 요소를 변경, 수정, 삭제할 수 있다. 2. Element html 태그를 사용하지 않고, 자바스크립트로 직접 만들 수 있다. 이것을 React에서 어떤 방식으로 사용할까? 3. React에서의 Element 다루기 보는 바와 같이 React에서도 Element를 생성, 수정을 할 수 있다.