본문 바로가기

분류 전체보기88

211126 탐색, 자료구조 개념 탐색, 자료구조 탐색 (Search) 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룬다. 대표적인 탐색 알고리즘으로는 DFS, BFS 를 꼽을 수 있는데, 이 두 알고리즘의 원리를 제대로 이해해야 코딩 테스트의 탐색 문제 유형을 풀 수 있다. 그런데 DFS 와 BFS 를 제대로 이해하려면 기본 자료구조인 스택과 큐에 대한 이해가 전제되어야 한다. 자료구조(Data Structure) 데이터를 표현, 관리, 처리 하기 위한 구조 스택과 큐를 사용할 때는 삽입/삭제/오버플로우/언더플로우 모두를 고민해야한다. 삽입 (Push) : 데이터 삽입 삭제 (Pop) : 데이터 삭제 오버플로 (Overflow) : 특정한 자료구조가 .. 2022. 1. 16.
211110 구현 개념 구현 개념 구현시 고려해야할 메모리 제약 사항 리스트의 크기 제약 채점 환경 구현 문제에 접근하는 방법 예시 문제 구현 개념 코딩 테스트에서 구현Implementation 이란 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다. 구현 문제 유형은 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념이다. 그러므로 알고리즘 교재에서는 대부분 구현을 별도의 유형으로 다루지 않는다. 우리는 알고리즘 문제를 해결할 때, 문제를 읽고 문제풀이 방법을 고민한다. 고민 끝에 문제에 대한 정확한 풀이 방법을 우리가 원하는 프로그래밍 언어로 정확히 구현했을 때 비로소 정답 처리를 받을 수 있다. 이를 위해 프로그래밍 언어의 문법을 정확히 알고 있어야 하며, 문제의 요구사항에 어긋나지 않는 답안 코드를 실수 없이 작성해야.. 2022. 1. 16.
211105 Javascript - Array 에서 최소, 최대 값(Min/Max) 구하기 Math.max(1, 2, 3) // 3 Math.min(1, 2, 3) // 1 const nums = [1, 2, 3] Math.min(nums) // NaN Math.max(nums) // Nan var nums = [1, 2, 3] Math.min.apply(Math, nums) // 1 Math.max.apply(Math, nums) // 3 Math.min.apply(null, nums) // 1 Math.max.apply(null, nums) // 3 const nums = [1, 2, 3] Math.min(...nums) // 1 Math.max(...nums) // 3 Math.min(1, 2, 3) Math.max(1, 2, 3) 2022. 1. 13.
211217 Mac에서 Sourcetree Keychain 저장하기 Mac에서 Sourcetree Keychain 저장하기 MacOS 에서 Sourcetree 를 깔고 원격 저장소에서 맨 처음 클론을 받은후, Push/Pull/Fetch/Merge 를 하면 이런 메세지가 뜬다. 솔직히 매번 bitbucket 비밀번호 입력하는거 너무 귀찮다... 이럴땐 Mac 에서 키체인을 설정해두면 편리하다. 절차 $ git config --global credential.helper osxkeychain $ git config --global credential.helper store # 여기서 Bitbucket 로그아웃 / 로그인 / CAPCHA 설정 # Push/Pull/Fetch/Merge 등 작업 ... $ git pull credential 설정 Bitbucket 홈페이지에 .. 2021. 12. 17.
211206 Javascript if 의 대체코드 작성방법 Javascript if 의 대체코드 작성방법 if 조건 // 나쁜 예 const welcomeMessage = ({ admin }) => { let message if (admin) message = 'Welcome, administrator!' return message } 간단한 if 조건은 아래와 같이 삼항 연산자로 대체할 수 있습니다. boolean ? valueForTrue : valueForFalse // 좋은 예 const welcomeMessage = ({ admin }) => admin ? 'Welcome, administrator!' : 'Welcome, user' const welcomeMessage = ({ admin }) => `Welc.. 2021. 12. 6.
211203 그리디 알고리즘 그리디 탐욕법. 단순하지만 강력한 문제 해결 방법 현재 상황에서 지금 당장 좋은 것만 고르는 방법 그리디 알고리즘은 매 순간 가장 좋아보이는 것만 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. 그리디 알고리즘 문제는 출제의 폭이 매우 넓기 때문에, 많은 유형을 풀어보며 훈련을 해야한다. 특정 알고리즘 (다익스트라) 같은 특이 케이스를 제외하고는 단순 암기를 통해 모든 문제를 대처하기 어렵다는 점을 이해해야한다. 보통 코딩 테스트에서 출제되는 그리디 알고리즘 유형의 문제는 창의력, 즉 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다. 다시말해 특정한 문제를 만났을 때 단순히 현재 상황에서 가장 좋아보이는 것만 선택해도 문제를 풀 수 있는지를 파악할 수 있어야한.. 2021. 12. 3.
211202 DFS, BFS 개념 그래프 인접 행렬 (Adjacency Matrix) 방식 인접 리스트 (Adjacency List) 방식 두 방식의 차이점 DFS (깊이 우선 탐색: Depth-First Search) DFS 의 동작 과정 DFS 예제 BFS (너비 우선 탐색: Breath First Search) DFS 의 동작 과정 BFS 예제 결론 그래프 그래프를 탐색하기 위한 대표적인 두 가지 알고리즘 노드(Node)(정점(Vertex) 이라고도 부른다) 와 간선(Edge) 로 이루어진 자료구조 그래프 탐색이란, 하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말한다. 두 노드가 간선으로 연결되어있다면 '두 노드는 인접하다(Adjacent)' 라고 표현한다. 프로그래밍에서 그래프는 크게 2가지 방식으로 표현할 .. 2021. 12. 2.
211201 Javascript Module Export & Import Module Export & Import Export Import Export 사용 예시 Module Export & Import MDN export, import 모듈 설명이 너무 성의없이 되어있어 사용 방법이랑 정리를 해봤다. Export /* MDN 공식문서 export */ // Exporting individual features export let name1, name2, …, nameN; // also var, const export let name1 = …, name2 = …, …, nameN; // also var, const export function functionName(){...} export class ClassName {...} // Export list export { na.. 2021. 12. 2.
211201 Javascript Reduce Method 활용법 JavaScript Reduce Method Made Simple reduce() 메서드는 가장 자주 사용되는 Array 메서드인 ES6(ECMAScript 2015) 에 추가된 JS 기능입니다. reduce() 의 역할은 제공된 reducer function 을 실행하여 주어진 Array 를 한 개의 값으로 줄여나가는 역할을 합니다. 결과적으로는 한 개의 값으로 줄여나가는 것 입니다. // reduce() 문법 array.reduce(callback, initialValue) const reducer = (accumulator, currentValue, index) => { // ... } 사용법 reduce 메서드는 보통 전체 총합/평균/최소/최대 값을 구할 때 사용됩니다. 이 말은 다른데에도 사용할.. 2021. 12. 1.
210914 Javascript - Regex 백업 Javascript - Regex 형식 백업 외부에서 텍스트를 받아와 목록에서 찾기 function findText (text) { const regex = new RegExp(text, 'gi') // text 찾기 }예제코드 See the Pen 210924 Regex_FindText by Jaeeun Jung (@dmsdl950823) on CodePen. Email 형식 확인 function emailValidator (email) { const regex = /^(([^()[\]\\.,;:\s@"]+(\.[^()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9].. 2021. 11. 27.
210610 Javascript - File / Blob / 업로드 / 다운로드 / Encoding / Decoding Blob 이란? FileList 와 File 의 생김새 차이 FileReader 사용하기 Image 를 Base64 코드로 변환하기 Base64 코드를 Image 로 변환하기 파일 내부 데이터를 텍스트로 변환하기 파일 업로드 파일 다운로드 부록 - 파일 용량 체크 Blob 이란? Blob Object 는 file 같은 나열할 수 있는(Enumerable) 오브젝트이며, raw data 입니다 Text 나 binary data 처럼 읽힐 수 있고, ReadableStream 으로 변환될 수 있습니다. FileList 와 File 의 생김새 차이 console 로 확인해보면, FileList 와 File 의 생김새의 차이는 아래와 같습니다. - FileList : { 0: File, length: 1 } -.. 2021. 11. 25.
210625 Javascript Textarea Input 이벤트에 맞춰 길이 늘리기 Javascript Textarea Input 이벤트에 맞춰 길이 늘리기 Vanilla Javascript const textarea = document.querySelector('textarea') textarea.addEventListener('input', e => { textarea.style.height = textarea.scrollHeight + 'px' }) Vue.js const textareaWrap = this.$refs.textarea.$el const textarea = textareaWrap.querySelector('textarea') textarea.style.height = 'auto' textarea.style.height = textarea.scrollHeight + '.. 2021. 11. 25.