본문 바로가기

All

(56)
[CodingTest] 쇠막대기, Stack 푸는데 어려웠던 문제 거나, 생소한 개념이 있는 문제들을 기록하려 한다. 이번 문제는 stack을 활용하여 푸는 것이었는데, 지문만 보고 해답을 찾기가 어려웠었다. 그래서 상세하게 풀이를 적어보고 복습하기 위해서 포스팅한다. 1. 문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에 서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. • 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. • 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. • 레이저는 어떤 쇠막대기의 양 끝점과도 겹..
[Algorithm] 스택(Stack) 자료구조 1. Stack 스택은 한쪽에서만 데이터를 넣고 뺄 수 있는, 후입선출(LIFO) 형태의 자료구조를 말한다. 후입선출(Last In First Out)은 가장 먼저 들어간 것이 가장 나중에 나오는 것을 의미한다. 따라서 자바스크립트에서 스택을 구현하려면, 배열의 Push와 Pop을 사용하면 된다. 2. 예시 입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요. function solution(s) { let answer = ''; let stack = []; for (const x of s) { if (x === '(') stack.push(x); else if (x === ')') stack.pop(); else { if (stack.leng..
[Algorithm] 알고리즘과 자료구조 차이점 코딩테스트 준비를 하다보니, 알고리즘과 자료구조의 정확한 차이점을 구분하지 못한다는 것을 알았다. 개념을 알고 공부하는 것과 그렇지 않는 것은 차이가 있기 때문에, 이 기회에 알고리즘과 자료구조에 대해 정리하려한다. 더불어 자바스크립트 코딩테스트 준비시 도움되는 사이트도 소개해보려 한다. 1. Algorithm(알고리즘) 알고리즘은 어떠한 문제를 풀 수 있는 정확한 방법을 말하며, 그 방법을 정의해 놓은 규칙을 의미한다. 대표적으로 선형탐색, 이진탐색, 삽입정렬, 퀵정렬 등이 있다. 2. 자료구조 자료구조는 데이터를 특정 방식으로 구성하고 저장함으로써 효율적으로 접근하고, 수정할 수 있도록 도와주는 것을 말한다. 말 그대로 '데이터를 담는 구조'를 의미한다고 생각하면 된다. 데이터 값들, 데이터 간의 관..
[Algorithm] 슬라이딩 윈도우 알고리즘(Sliding Window Algorithm) 1. 슬라이딩 윈도우 알고리즘(Sliding Window Algorithm)이란? 슬라이딩 윈도우 알고리즘은 고정 사이즈의 윈도우를 이동시키면서, 윈도우 내에 있는 데이터를 이용해 문제를 풀이하는 알고리즘을 말한다. 이때 윈도우 안에 있는 데이터는, 양 끝에 있는 원소들만 변화한다. 2. 예시 현수의 아빠는 제과점을 운영합니다. 현수 아빠는 현수에게 N일 동안의 매출기록을 주고 연속된 K일 동안의 최대 매출액이 얼마인지 구하라고 했습니다. 만약 N=10이고 10일 간의 매출기록이 아래와 같습니다. 이때 K=3이면 12 15 11 20 25 10 20 19 13 15 연속된 3일간의 최대 매출액은 11+20+25=56만원입니다. 여러분이 현수를 도와주세요. //내코드 function solution(k, ..
[Algorithm] 투 포인터 알고리즘 (Tow Pointer Algorithm) 1. 투 포인터 알고리즘(Tow Pointer Algorithm)이란? 투 포인터 알고리즘은 말 그대로 두 개의 포인터 위치를 기록하며 처리하는 알고리즘을 말한다. 주로 정열된 배열에서 목표 값에 해당하는 요소를 찾을때 많이 사용한다. 투 포인터 알고리즘에는 서로를 향해 두 포인터를 움직이는 것과 같은 방향으로 두 포인터를 움직이는 것, 2가지 유형이 있다. 1) 서로를 향해 두 포인터를 움직이는 유형 두 개의 포인터를 시작과 끝에 설정하고, 포인터가 만날때까지 서로를 향해 이동한다. 2) 같은 방향으로 두 포인터를 움직이는 유형 두 개의 포인터를 같은 위치에 설정하고, 동일한 방향으로 포인터를 이동한다. 2. 예제 오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램..
[독후감] 작은 것에서부터 시작하는 인생의 성공 레시피, <원씽> 리뷰 THE ONE THING (게리켈러 - 원씽) 1. 원씽(The ONE THING) 요약 현대 사회에서는 많은 사람들이 돈을 버는 것에 대한 꿈과 욕심을 가지고 살고 있다. 그러나 돈을 버는 것이 모든 것이라 생각하는 것은 옳지 않을 뿐 아니라, 금전만을 중심으로 삶을 살아가는 것은 오히려 불행함으로 이어질 수 있다는 주장을 하는 책이 있다. 바로 게리 켈러(Gary Keller)의 이다. 이 책은 작은 것에서부터 시작하여 큰 성취를 이룰 수 있도록 우리의 삶에 가장 중요한 것에 초점을 맞춘 책으로, 이번 블로그에서는 의 내용과 그 가치에 대해 포스팅하고자 한다. 우선, 은 인생의 목표를 설정하고 그것을 이루기 위한 최소한의 힘을 집중하는 것이 중요하다는 것을 주장한다. 이를 위해 작은 것에서부터 시작하..
[Error] Next.js & styled-components, 새로고침 시 css 초기화 에러 발생 이유와 해결방법 1. Next.js Error Next.js에서 새로고침 시 css가 초기화되는 오류가 발생했다. 다시 저장하면 제대로 css가 적용되지만, 새로고침만 하면 css가 먹지 않고 초기의 모습 그대로 출력됐다. 2. 에러 생성 이유 구글에 해당 에러에 대한 해결방안을 검색해보자, styled-components와 렌더링 문제라는 것을 알게 되었다. 1) Next.js 렌더링 과정 해당 에러의 원인을 알기 위해선, Next.js의 렌더링 과정을 먼저 알아야 한다. Next.js는 서버에서 모든 페이지를 미리 렌더링(pre-render) 한다. 그 후, 서버는 클라이언트에 미리 렌더링 한 HTML 문서를 전달한다. 브라우저는 서버에서 받은 HTML을 문서를 화면에 렌더링 하면서 해당 문서에 존재하는 자바스크립트..
[IT] 일렉트론(Electron)이란? (feat. 자바스크립트로 데스크탑 앱 개발하기 ) 1. 일렌트론 (Electron) 일렉트론(Electron)은 자바스크립트(Javascript), HTML, CSS 만으로도 데스크톱 애플리케이션을 만들 수 있도록 해주는 프레임워크(framework)이다. 노드(Node.js)를 기반으로 하며, 자바스크립트뿐만 아니라 자바스크립트를 기반으로 하는 react, nextjs로도 애플리케이션을 만들 수 있다. 윈도우(window), 맥 OS(Mac OS), 리눅스(Linux) 모두 지원한다. 우리가 많이 사용하는 디스코드(Discord), 노션(Notion), 깃헙데스크톱(GitHubDesktop) 모두 일렉트론으로 만들어진 애플리케이션이다. 2. 일렉트론의 장점 1) 낮은 진입 장벽 일렉트론의 가장 중요한 장점은 진입 장벽이 낮다는 것이다. 자바스크립트 웹..