728x90
반응형

algorithm 24

[Algorithm] divide and conquer, quick sort - 분할정복, 퀵정렬

오늘은 분할정복과 퀵정렬에 대해 이야기를 해볼까 한다. 지난번 알고리즘에서 재귀함수를 설명했는데, 재귀함수야 말로 분할정복의 가장 대표적인 예이다. 문제를 base case와 recursive case로 나누어서 생각하고, 가장 최소 단위가 해결이 될 때 전체가 해결되도록 하기 때문이다. [ Hello Coding, 그림으로 개념을 이해하는 알고리즘 ]의 챕터 4에 나오는 내용으로 설명을 시작해본다 Divide and conquer ( 분할 정복 ) 한자로 번역이 되니까 어려워보인다. 조금 말을 쉽게하자면, "쪼개고 쪼개서 하나씩 해결하자" 이다. 아래의 그림은 책의 예제이다. 여러분이 농부이고, 위의 그림과 같은 농장을 가지고 있다고 가정한다. 이 농장을 똑같이 생긴 정사각형 토지로 나누고 싶습니다. ..

Algorithm 2020.09.11

[Algorithm] Recursion - 재귀

Loops may achieve a performance gain for your program. Recursion may achieve a performance gain for your programmer. Choose which is more important in your situation! : 루프는 프로그램의 성능을 향상시킵니다. 재귀는 프로그래머의 실력을 향상시킵니다. 상황에 따라 더 적합한 걸 선택하세요! Recursion ( 재귀 ) 재귀는 반복문과 그 역할을 서로 바꿀 수 있다. 재귀를 쓰면 복잡한 코드가 조금 더 간결해보이는 효과를 나타낸다. 피보나치를 구현해보자. 반복문: const fib1 = (n) => { if ( n < 3 ) { return n === 0 ? 0 : 1; } ..

Algorithm 2020.09.08

20200907

오늘은 블로깅하며 공부한 내용을 복습하는 시간을 가졌다. 자료구조를 생각보다 빨리 마무리한 덕분에 여유가 크게 생겼지만, 지난 주말동안 날려버린 것들을 다시 세우기에는 너무나 부족한 시간이다. 일단은 내일이 지난 다음에야 조금 정신을 차릴 수 있지 않을까. 9월 07일 (월) Today I Learned 오늘은 OOP에 대해 공부하였다 자바스크립트에서는 클래스 이외의 일반 객체도 상속이 가능하다. 객체에 함수를 담아 메소드처럼 상속받거나, super syntax를 활용해 부모속성을 받아오기도 한다. Tomorrow I'll Learn 서버 공부하기

Today I Learned 2020.09.07

[Data structure] 자료구조 - stack, queue

자료구조의 가장 기본이 되는 stack ( 스택 ) 과 queue ( 큐 ) 는 자료구조의 처음을 장식한다. 그런데 정작 사용할 때에는 어떻게 해야할 지 막막한 게 초보자의 마음이리라. 자료구조는 구현과는 제법 거리가 있다. 스택과 큐는 그냥 배열로 선언해서 사용해도 무방하다. 이처럼 자료구조는 어떤 방식으로 데이터를 관리할 지 그 구조에 대해 설명하는 것이지, 어떤 방식으로 구현해야만 한다는 건 아니다. 따라서 앞으로 정리하게 될 모든 자료구조도 개념에 대해 이해하는 게 우선이라는 점을 기억하자. 또, 자료구조는 알고리즘과 뗄 수 없는 관계이기때문에 아주아주 중요한 개념이라는 것 정도는 알고 있자. Stack ( 스택 ) 스택은 동전쌓기처럼 가장 나중에 쌓은 동전을 가장 먼저 꺼낼 수 있는 구조이다. ..

Algorithm 2020.09.07

[Algorithm] 이진탐색 - Binary Search

이진탐색은 [Hello Coding] 그림으로 개념을 이해하는 알고리즘의 가장 첫번째로 소개되는 알고리즘이다. 간단하게는 Up&Down 게임을 생각하면 쉽다. Up & Down 게임을 해보려면 여기를 통해 해보자. 이진탐색 이진탐색을 하기에 앞서, 단순탐색에 대해 생각해보자. 내가 0부터 100 사이의 숫자 중 하나를 선택했을 때 단순하게 내가 생각한 숫자를 맞히기 위해서는 0부터 시작해서 100까지 1씩 증가하면 된다. const myNumber = 88; for ( let i = 0; i < 100; i++ ) { if ( i === 88 ) { console.log("Find the number you thought! It's ${i} !"); } } 위의 코드처럼 0부터 1씩 증가하며 내가 생각한..

Algorithm 2020.09.06

20200904

오늘은 제법 완료한 일들이 많다. 코드스테이츠 중간리뷰, 슬랙봇 재정비, 스프린트, 알고리즘 스터디... 내일부터 주말이니까 조금 빡세게 코딩해보자! 9월 04일 (금) Today I Learned 오늘은 자료구조에 대해 공부하였다 우준님과 함께 페어프로그래밍을 진행하였다 Tomorrow I'll Learn 슬랙봇 ( feat. Bots ) 만들기 포스팅 시간나면 서버관련 내용 포스팅 시간나면 자료구조 포스팅

Today I Learned 2020.09.04

20200831

봇과 heroku와의 혈투. 상걸님께 물어보길 잘했다. Full IM 23 기의 첫 날! 생각보다 시작은 가볍다. 나쁘지않은 출발 알고리즘과 봇, 봇을 얹어둘 서버에 관한 내용을 블로깅해야겠다. 8월 31일 (월) Today I Learned 오늘은 Git workflow에 대해 공부하였다 면수님과 페어프로그래밍 슬랙봇 슬랙봇이 쓰레드의 모든 글을 읽으며 에러를 뿜고 있었다. 임시로 에러를 뿜으며 정지하는 일은 없도록 임시로 쓰레드를 무시하도록 변경 heroku가 문제라서 뻗는 줄 알고, 상걸님께 사용하는 서버를 문의하였다. google cloud를 소개받아 프리티어로 슬랙봇을 얹어두었다. 근데 뭔가 이거 하나 올리자고 이벤트 크레딧을 사용하는 게 좀 아깝다. Tomorrow I'll Learn 면수님과..

Today I Learned 2020.08.31

[Algorithm] 입문 서적 추천

컴퓨터과학의 기초를 알아두면 코딩을 하는 데 매우 도움이 된다. 특히 논리적인 사고와 순서, 그리고 효율에 관한 내용을 다루는 것이 컴퓨터과학의 기초인 자료구조와 알고리즘이다. 이 둘은 뗄레야 뗄 수 없는 관계에 있지만, 무엇을 먼저하든 크게 상관은 없다. ( 전공에서는 일반적으로 데이터구조를 먼저 학습한다. ) 말만 들어도 복잡하고 머리아픈 내용이 가득할 것 같지만, 어떻게 시작하느냐에 따라 학습의지가 불타오를 수도, 꺾일 수도 있는 분야이다. 그렇기에 그 시작은 아주 가볍고 쉽게 풀이해 이해할 수 있는 정도의 수준이어야 하고, 오늘 소개할 책은 그 시작을 함께하기에 현존하는 서적 중 단연 최고가 아닐까 한다. Hello Coding - 그림으로 개념을 이해하는 알고리즘 저자: 아디트야 바르가바 폴님께..

Algorithm 2020.08.30
728x90
반응형