본문 바로가기

Base18

꼬리 재귀 (Tail Recursion) 재귀 자체도 머리 속에 과정을 떠올리려고 하면 굉장히 추상적이라 어렵게 느껴지는데 꼬리 재귀 개념까지 한번에 이해하려고하니 글을 읽는 것만으로는 잘 이해가 되지 않았다. 개발자 도구를 이용해 디버깅해보며 스택이 어떤 식으로 변하는 지도 살펴보고, 내 관점에서 이해한 바를 그림으로도 그려보기도 했다. 덕분에 꼬리재귀가 어떻게 스택오버플로우 문제를 개선할 수 있다는 건지 이해할 수 있었다. 하지만 아직 설명할 부분들이 좀 더 있는 것 같아 내용은 계속해서 수정, 보충할 예정이다. (잘못 알고있거나 보충할 내용이 있다면 알려주시면 감사하겠습니다🙏🏻) 재귀 (Recursion) 꼬리 재귀에 대한 이야기를 하기 전에 '재귀'가 뭔지, 그리고 일반적인 재귀의 위험성에 대해 먼저 간단히만 이야기하고 넘어가려 한다. .. 2021. 1. 8.
Git, Gitworkflow Git Git은 파일 내용이 어떻게 변경되었는지 기록들을 보관해주는 '버전 관리 시스템(Version Control System)'이라고 할 수 있다. 버전 관리를 하게 되면 파일을 수정해도 다시 이전 상태로 되돌리거나 쉽게 복구할 수 있고, 어떤 내용을 수정했는 지 비교해 볼 수도 있고, 누가 언제 수정했는지도 알 수 있다. Git? Github? Git과 Github은 이름이 비슷해서 처음 접했을 때 같은 것으로 알기 쉽지만 둘은 전혀 다르다. Git은 버전을 관리하는 '시스템'이고, Github은 Git을 사용하는 유저들이 모인 '소셜 플랫폼(social platform)'이다. Distributed System (분산 시스템) 분산 시스템은 여러개의 저장소(Repository)를 통해 관리하는 시.. 2020. 12. 16.
CLI (Command Line Interface) CLI (Command Line Interface) 명령 줄 인터페이스(CLI, Command line interface) 또는 명령어 인터페이스는 텍스트 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다. 우리는 보통 컴퓨터 작업을 할 때, 윈도우창을 보면서 클릭을 하는 GUI(Graphic User Interface, 그래프 유저 인터페이스)를 이용한다. 하지만 CLI(Command Line Interface, 명령 줄 인터페이스)는 더욱 빠르고 강력하며, 원격 서버에서도 같은 환경에서 작업할 수 있다는 장점이 있다. Mac OS에서는 Terminal이, Win.. 2020. 12. 16.
소수(Prime Number)구하기 - Javascript 문제 정수를 입력받아 2부터 해당 수(num)까지의 소수들을 문자열로 리턴 string 타입, '2-3-5-7'의 형식 이중 반복문(for문)을 사용할 것 풀이 우선 소수의 정의부터 명확히 하면, 소수(Prime Number)란 '양의 약수가 1과 자기 자신 뿐인, 1보다 큰 자연수'이다. 예를 들어, 5는 1×5 또는 5×1로 수를 곱한 결과를 적는 유일한 방법이 자신을 포함하기 때문에 소수라고 할 수 있다. ver1 이중 반복문을 사용해야한다는 조건이 있어서, 우선 첫번째 for문을 어떤식으로 구성할 지 생각해봤다. 1. 입력되는 수(num)가 2이상이기 때문에, 모든 결과값에 포함될 2를 출력 문자열(result)에 2를 미리 지정해둔다. 2. 3부터 num까지 반복문을 통해 하나씩 소수인지 확인한.. 2020. 12. 10.
Math.max(), apply, Spread Operator(...) - Javascript 문제 차례로 3개의 문자열을 입력받아, 가장 짧은 문자열을 리턴하는 문제 풀이 과정 1. 배열에 모든 문자열의 길이를 저장 2. 가장 짧은 문자열 길이 구하기 3. 가장 짧은 문자열과 길이가 일치하는 문자열을 리턴 function findShortestOfThreeWords(word1, word2, word3) { let words = [word1.length, word2.length, word3.length]; let min = Math.min(...words); if (word1.length === min){ return word1; } else if (word2.length === min){ return word2; } return word3; } 새로 알게 된 것 위의 과정으로 접근했더니, 최소값.. 2020. 12. 10.
개발자가 질문하는 방법 개발자에게 '질문'이란 필수적이다. 또 계속해서 무언가를 배워야하는 직업이기 때문에 개발자에게 '질문하는 방법'을 아는 것은 매우 중요하다. Step 0 : 검색만이 살 길! 수많은 사람들이 궁금해 해왔으며, 질문과 답변이 오간 흔적이 반드시 있다. (99% 확률로 있음) 검색을 통해 답을 얻지 못하더라도 내가 무엇을 찾아봤는지 기록, 기억, 트래킹 할 수 있어야 한다. Step 1 : 질문을 개선하기 위해 검색은 필수 답을 얻기 보다는 더 나은 질문 keyword를 얻기 위해! 전체 에러가 이해가지 않아도 한번쯤 읽어보기 Step 2 : 질문하기 이 세상에 바보같은 질문은 없다. 하지만 정성을 들이지 않은 질문은 많다. 질문의 퀄리티가 점점 높아져야 한다. 0.2%씩이라도! Learn by doing .. 2020. 12. 10.
반응형