자바스크립트(60)
-
[JS] 프로그래머스 - 소수찾기(완전탐색 )
문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한 사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. 013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 설명 예제 #1 [1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다. 예제 #2 [0, 1, 1]으로는 소수 [11, 101]를 만들 수 있습니다. 11과 011은 같은 숫자로 취급합니..
2020.06.06 -
[JS] 투 포인터, 구간 합
이 포스팅은 동빈나님의 코딩테스트 & 알고리즘 대회 핵심 노트 - 투 포인터, 구간 합이라는 강의를 보고 쓴 것이다. 배열의 특정 연속된 구간을 처리하기 원하는 경우 문제에서 연속된 데이터 구간을 처리하기를 원한다면? 다양한 접근 방법을 떠올려 보는 것이 중요! 자주 사용되는 기법들로는 어떤 것들이 있을까? 이 강의에서 나오는 대단한 풀이를 보고 그냥 지나칠 수가 없었다. 세상엔 정말 날고 기는 사람들이 많다는 것을 다시 한 번 느낀다. 분명히 프로그래머스라는 사이트에서 이러한 유형의 문제를 풀때 이중 반복문을 남발했던 것 같은데... 요새 자료구조를 복습하는 입장에서 볼 때, 과거의 나는 효율성이라고는 1도 고민하지 않고 문제를 풀었던 것 같다. 이 강의는 배열의 특정 연속된 구간을 처리하는 것을 목적..
2020.06.05 -
[JS] 순열
1. 순열 순열은 서로 다른 n개의 원소에서 r개를 뽑아서 한 줄로 세우는 경우의 수를 말한다. 여기서 r,n은 자연수이며 r은 n이하여야만 한다. 또한 순열은 정의역과 공역이 같은 일대일 대응이다. 여기서 일대일 대응은 두 집합 사이를 중복 없이 모두 일대일로 대응시키는 함수를 말한다. 순열은 경우의 수이고 일대일대응이다. 왜 그런지 예를 한번 들어보자. 앞에서 경우의 수에 대해서 이야기를 하지 않았는데, 경우의 수는 1회의 시행에서 일어날 수 있는 사건의 수를 말한다. 아래 그림은 네 개의 문자를 가지고 있는 배열이 있는데, 네 개 중에 두 개의 문자를 임의로 골라 중복없이 조합하여 길이가 2인 단어를 생성하려고 하는 상황을 나타낸 것이다. 따라서 위의 예시를 보면, 두 개의 독립사건이 있는데, 첫 ..
2020.06.04 -
자바스크립트란?
1. 자바스크립트 자바스크립트는 웹 페이지에 생동감을 불어넣기 위해 만들어진 가벼운 인터프리터 또는 JIT 컴파일 프로그래밍 언어이며, 웹에 쓰이는 하나 뿐인 프로그램이다. 자바스크립트는 표준 웹 기술이라는 레이어 층에서 세 번째 층이라고 볼 수 있다(첫 번째 층은 HTML, 두 번째 층은 CSS)이다. 여기서 HTML은 제공할 웹 컨텐츠의 구조와 의미를 문단, 제목, 표 등으로 정의하고 부여하는 마크업 언어이다. 또한 CSS는 배경색이나 폰트 등의 레이아웃을 지정하여 HTML 컨텐츠를 꾸며주는 스타일 규칙언어이다. 따라서 HTML, CSS는 프로그래밍 언어가 아니다. 자바스크립트로 만든 프로그램을 스크립트라고 한다. 스크립트는 HTML 안에서 작성할 수 있고, 웹 페이지를 불러올 때 브라우저에 의하여 ..
2020.06.03 -
[JS] 연결리스트(LinkedList)
1. 순차 선형 리스트 나는 C, 파이썬, 자바 그리고 자바스크립트를 배웠다. 이 네 개의 언어를 배우면서 느낀 점이 있다면, 여러 개의 데이터를 한꺼번에 저장하는 방법을 배울 때 가정 먼저 배열을 배운다는 것이다. 이 배열을 자료구조에서는 순차 선형 리스트라고 한다. 순차 선형 리스트는 논리적이고 물리적인 순서가 같아서 원소의 위치에 대한 접근성이 쉽다는 장점이 있다. 하지만, 삽입, 삭제 연산 후에 원소들을 이동시키는 추가적인 작업과 시간이 필요하다는 것이 단점이다. 또한, 순차 선형 리스트는 삽입 삭제 연산이 엄청나게 많을 경우, 원소들의 이동작업도 그에 따라 비례한다. 이는 오버헤드 증가를 초래하여 성능상의 문제를 일으킬 수 있기 때문에 배열이 갖고 있는 메모리 사용의 비효율성 문제를 그대로 갖고..
2020.06.02 -
[JS] 병합 정렬
1. 병합 정렬 병합 정렬은 여러 개의 정렬된 자료의 집합을 결합하여 한 개의 정렬된 집합으로 만드는 방법을 말한다. 병합 정렬도 퀵 정렬 처럼 분할정복 알고리즘을 이용하는 방법이며, 속도 또한 퀵 정렬과 같이 $$ O(N\times log_2{N}) $$ 의 성능을 보인다. 병합 정렬이 퀵 정렬과 속도는 같지만, 퀵 정렬은 최악의 경우 $$ O(N^2) $$ 의 속도를 가지지만, 병합 정렬은 최악의 경우에도 $$ O(N\times log_2{N}) $$ 의 속도를 가지는 매우 안정적인 정렬이라고 할 수 있다. 2. 동작 순서 병합 정렬의 동작 순서는 매우 간단하다. 2개씩 나누어서 분할 한 후 (재귀 함수를 이용) 결합을 하면 되는데, 주의할 점은 결합을 함과 동시에 정렬 작업을 해주어야 한다. 3. ..
2020.06.02