Algorithm11 [알고리즘] Time Complexity / greedy Algorithm / implementation 알고리즘은 문제를 해결하는 최선의 선택입니다. 1. 문제를 이해하고 2. 전략을 세우고 (수도코드, 흐름의 그림, 페어에게 설명) 3. 이에 따라 코드 작성으로 문제 해결 개발자로서 만나게 될 대부분의 개발 태스크는 알고리즘 문제만큼 어렵지 않습니다. 그러나 새로운 문제에 봉착했을 때, 전략과 알고리즘을 구상하여 실제로 코드로 구현해 보는 경험은 매우 중요합니다. 많은 기업에서 주니어 개발자를 채용할 때에, 알고리즘 풀이를 통해 지원자의 역량을 가늠합니다. 알고리즘 풀이를 통해 지원자의 로직과 문제해결 방식을 확인하고, 이를 통해 개발자다운 사고방식을 보게 된다고 합니다. 1. Time Complexity 알고리즘 문제를 풀때 해결하는것도 가장 중요하지만 효율적인 알고리즘을 찾는 것 또한 중요합니다. 효.. 2021. 7. 20. [알고리즘] Graph / Tree / BST 1. Graph 컴퓨터 공학에서 이야기 하는 자료구조 그래프는 전혀 다른 모습을 가지고 있습니다. 자료구조의 그래프는 마치 거미줄처럼 여러개의 점들이 선으로 이어져 있는 복잡한 네트워크 망과 같은 모습을 가지고 있습니다. 그래프는 여러개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조입니다. 직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있습니다. 간접적인 관계라면 몇 개의 점과 선에 걸쳐 이어집니다. 하나의 점을 그래프에서는 정점(vertex)이라고 표현하고, 하나의 선은 간선(edge) 이라고 합니다. 알아둬야 할 그래프 용어들 무(방)향그래프(undirected graph): 서울에서 부산으로 갈 수 있듯, 반대로 부산에서 서울로 가는것도 가능합니다. 단방향(directed) .. 2021. 6. 19. [자료구조] 자료구조 기초 Stack, Queue 자료구조? 자료구조란 여러 데이터들의 묶음을 저장하고, 사용하는 방법을 정의한 것입니다. 자료구조는 자료의 집합을 구조화하고, 이를 표현하는 데에 초점이 맞춰져 있습니다. 이미 자료구조를 알게 모르게 많이 접했습니다. 사람이 사용하기에 편리하려고, 사용하기 좋으려고 만들어진 것이 자료구조입니다. 자주 등장하는 네 가지의 자료구조 Stack, Queue, Tree, Graph 대부분의 자료구조는 특정한 상황에 놓인 문제를 해결하는 데에 특화되어 있습니다. 따라서 많은 자료구조를 알아두면, 어떠한 상황이 닥쳤을 때 적합한 자료구조를 빠르고 정확하게 적용하여 문제를 해결할 수 있습니다. 이것은 문제 해결력을 필요로하는 알고리즘 테스트(코딩 테스트)와 굉장히 밀접한 연관성이 있습니다. 특정 문제를 해결하는 데에.. 2021. 6. 17. [자료구조/알고리즘] JSON, Tree UI, 재귀함수 과제 JSON의 탄생 배경 JSON은 JavaScript Object Notation의 줄임말로, 데이터 교환을 위해 만들어진 객체 형태의 포맷입니다. 네트워크를 통해, 어떤 객체 내용을 다른 프로그램에게 전송한다고 가정하겠습니다. 이 객체 내용을 일종의 메신저 혹은 채팅 프로그램에서 쓰는 하나의 메시지 입니다. const message = { sender: "김코딩", receiver: "박해커", message: "해커야 오늘 저녁 같이 먹을래?", createdAt: "2021-01-12 10:10:10" } 메시지 객체가 전송 가능하려면, 메시지를 보내는 발신자와 메시지를 받는 수신자가 같은 프로그램을 사용하거나, 문자열처럼 범용적으로 읽을 수 있는 형태여야 합니다. 전송가능한 조건 (transfera.. 2021. 6. 16. [알고리즘] 재귀함수 재귀는 재귀 (원래의 자리로 되돌아가거나 되돌아옴) 어떻게 보면은 무한 반복문과 굉장히 비슷합니다. 살면서 재귀라는 말을 듣기 어려운거 같은데 쉽게 생각하면 반복문과 다를게 없습니다. 특히 무한 반복문 while이나 재귀함수나 탈출 조건을 if문으로 설정 해주어야 하는 것 처럼.. 항상 느끼는 거지만, 어렵게 생각하면 한없이 어려운 것 같습니다. 그렇기 때문에 많이 해보아야 해결 되는 문제인듯 합니다. 재귀를 사용할 때 1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우 2. 중첩된 반복문이 많거나 반복문의 중첩 횟수(number of loops)를 예측하기 어려운 경우 ex) 펙토리얼 재귀함수 function fac(n){ if(n===1){ // 탈출 조건 return 1; } re.. 2021. 6. 15. 이전 1 2 다음