[JS 톺아보기] 반복문과 재귀함수의 비교 (with. 모던 JS Deep Dive)
·
📝 공부 기록/Javascript
해당 시리즈는 [Deep Dive] 스터디의 발표 내용으로, [모던 자바스크립트 Deep Dive]의 일부를 발췌하여 작성하였습니다. 모던 자바스크립트 Deep Dive 12.7.2 재귀함수 (p.182)”재귀 함수는 반복되는 처리를 반복문 없이 구현할 수 있다는 장점이 있지만 무한 반복에 빠질 위험이 있고, 이로 인해 스택 오버플로 에러를 발생시킬 수 있으므로 주의해서 사용해야 한다. 따라서 재귀 함수는 반복문을 사용하는 것보다 재귀 함수를 사용하는 편이 더 직관적으로 이해하기 쉬울 때만 한정적으로 사용하는 것이 바람직하다.” ❓그렇다면 반복문과 재귀 함수 중 각자 어떤 식으로 더 성능이 좋은 걸까? 1. 재귀 함수와 반복문의 차이점반복문과 재귀 함수의 성능 비교에 앞서, 둘의 차이점에 대해 알아보려고..
[K-DEVCON 고투런 1기] 지원 과정과 합격! 그리고 회고
·
📝 후기 및 회고록
[행사 후기] 개발자 취준생이 개발자 밋업 행사 '데브콘'에 가보았다!처음으로 다녀온 3월달 개발자 밋업 행사도 벌써 1달 전이 되었다!데브콘 서울 - 삼월엔 일을 "제대로" 하자를 다녀온 뒤로,어떤 주제여도 앞으로 꾸준히 다녀야겠다 생각했다. 나와 전혀 관계codnjs3575.tistory.com 나에게 좋은 기억을 안겨주었던 3월, 4월 밋업 행사를 다녀온 뒤행사를 주최했던 커뮤니티인 K-DEVCON에서 멘토링 과정인 고투런(Go To Learn)을 모집한다길래 바로 지원하였다. 지원서 검토 -> 인터뷰 일정 논의 -> 인터뷰 (온라인) -> 최종 결과 통보 모집 기간 : 2024년 4월 1일 ~" data-og-host="k-devcon.com" data-og-source-url="https://..
[JS|백트래킹] 프로그래머스 12952번. N-Queen
·
💾 자료구조 & 알고리즘/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/12952 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  1. 입력과 출력입력체스판의 가로,세로의 길이 n출력n개의 퀸이 조건에 만족하도록 배치할 수 있는 경우의 수 return 2. 문제 풀이 로직해당 문제는 체스판의 가로,세로 길이인 n이 들어올 때, 퀸을 n개 놓을 수 있는 경우가 몇 가지인지 알아보는 문제이다.(닌텐도 레이튼 교수 시리즈를 좋아하는 사람에겐 익숙한 문제이다!)  Queen의 활동 범위는 다음과 같다.Queen을 놓은 곳의 같은 행과..
[JS|알고리즘] 자바스크립트(javascript)의 그래프 최단경로 탐색 알아보기
·
💾 자료구조 & 알고리즘/이론 정리
그래프에서 최단 경로를 탐색할 때 가중치의 여부에 따라 '최단 경로'의 정의가 달라진다.만약 (1) 가중치가 없는 그래프의 경우 시작 노드부터 종료 노드까지의 최소한의 간선 개수를 의미하지만,  (2) 가중치가 있는 그래프의 경우 시작 노드부터 종료 노드까지의 최소한의 가중치 합을 지닌 간선들을 의미한다. 가장 작은 가중치들의 합을 구하는 가장 유명한 두 방법은 바로 다음과 같다.1. 다익스트라(Dijkstra) : 가장 대부분 사용하는 최단 경로 알고리즘. 하지만 음의 가중치가 있는 그래프에서는 이를 감지하지 못하며, 또한 최단 경로를 보장하지 못한다는 단점이 있다.2. 벨만-포드(Bellman-Ford) : 주로 음의 가중치가 있는 그래프에서 사용가능한 알고리즘이다. 하지만 음의 순환을 감지할 뿐 최..
[JS|알고리즘] 자바스크립트(javascript)의 DFS/BFS(그래프 탐색 순회) 알아보기
·
💾 자료구조 & 알고리즘/이론 정리
그래프에서 경로를 탐색할 때 대표적으로 사용하는 방법이 2가지 있다.1. 깊이 우선 탐색(DFS) : 더 이상 탐색할 노드가 없을 때까지 일단 가본다. 그러다가 더 이상 탐색할 노드가 없으면 최근에 방문했던 노드로 되돌아간 다음 가지 않은 노드를 방문한다.2. 너비 우선 탐색(BFS) : 현재 위치에서 가장 가까운 노드부터 모두 방문하고 다음 노드로 넘어간다. 그 노드에서 또 다시 가장 가까운 노드부터 모두 방문한다. 글보다는 이해가 쉬운 그림과 함께 DFS부터 알아보려고 한다. 1. 깊이 우선 탐색 알고리즘 (DFS) 1-1. 깊이 우선 탐색의 탐색 순서깊이 우선 탐색(Depth-First Search)은 시작 노드부터 탐색을 시작하여 간선을 따라 최대 깊이 노드까지 이동하며 차례대로 방문한다. 만약 ..
[JS|자료구조] 자바스크립트(javascript)의 Graph(그래프) 알아보기
·
💾 자료구조 & 알고리즘/이론 정리
- 그래프란?그래프 : 노드와 간선을 이용한 비선형 데이터 구조 그래프를 구성하는 용어들을 정리해보자.그래프는 데이터 간의 관계를 표현하는 데에 사용하며,데이터를 노드로, 데이터 간의 관계나 흐름을 간선으로 표현하는 특징을 갖는다.간선은 방향을 가질 수도 있고 갖지 않을 수도 있다.또한 관계나 흐름에서 정도를 표현할 때에는 가중치라는 개념을 사용한다. 그림 속 예시을 통해 노드, 간선, 가중치라는 용어를 알아보자. 그림에서 동그라미로 표현한 것이 노드, 화살표로 표현한 것이 간선, 간선 위에 숫자로 표현한 것이 가중치이다. 그래프의 특징과 종류에 대해 알아보자.그래프는 방향성, 가중치, 순환의 특성에 따라 종류를 구분할 수 있다. 1. 흐름을 표현하는 방향성의 유무 : 방향 그래프(directed gra..
[JS|자료구조] 자바스크립트(javascript)의 집합 알아보기
·
💾 자료구조 & 알고리즘/이론 정리
- 집합이란?집합 : 순서와 중복이 없는 원소들을 갖는 자료구조상호배타적 집합에 대해 알아보자.집합은 특성에 따라 부르는 말이 다양하다유한 집합(원소 개수가 유한한 집합), 무한 집합(원소 개수가 무한한 집합), 공집합(아무 원소도 없는 집합) 오늘 살펴볼 집합은 다양한 종류의 집합들 중 "상호배타적 집합"에 대해서만 말해보려고 한다. "상호배타적 집합" : 교집합이 없는 집합 관계  사진을 통해 상호배타적 집합인 경우와 그렇지 않은 경우에 대해 알아볼 수 있다.    즉, 공통 원소가 있어서 교집합이 있는 집합의 경우 상호배타적이지 않는 집합이라고 말할 수 있다.  배열을 활용한 트리로 상호배타적 집합 표현하기집합은 배열을 활용한 트리로 구현이 가능하다.트리를 구현하기 위해서는 루트 노드가 필요한데, ..
[JS|자료구조] 자바스크립트(javascript)의 Tree(트리) 알아보기
·
💾 자료구조 & 알고리즘/이론 정리
- Tree란? 트리(Tree) : 데이터들의 저장, 탐색에 유용한 자료구조 트리를 구성하는 용어들을 정리해보자.트리는 나무를 거꾸로 뒤집어 놓은 모양이며 따라서 나무 밑둥(root)이 맨 위에 있는 형태이다.트리에 대하여 이해하기 위해서는 이를 구성하는 용어들에 대한 이해가 필요하다.  노드는 트리를 구성하는 요소이며, 노드와 노드 사이를 이어주는 선을 간선 또는 Edge라고 한다.  노드 중 가장 위에 있는 노드를 루프노드라고 하며, 반대로 가장 밑에 있는 노드를 리프노드라고 한다.따라서 리프노드는 자식이 없는 노드이다.  간선으로 직접 연결된 노드 중 위에 있는 노드를 부모 노드, 아래에 있는 노드를 자식 노드라고 한다.같은 부모 노드를 갖고 있는 노드를 형제 노드라고 한다. 위 그림 중 13이 5..
[JS|해시] 프로그래머스 131127번. 할인 행사
·
💾 자료구조 & 알고리즘/문제 풀이
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 입력과 출력입력정현이가 원하는 제품을 나타내는 문자열 배열 want정현이가 원하는 제품의 수량을 나타내는 정수 배열 numberXYZ 마트에서 할인하는 제품을 나타내는 문자열 배열 discount출력회원등록시 정현이가 원하는 제품을 모두 할인 받을 수 있는 회원등록 날짜의 총 일수 return 2. 시행착오출력값 이해를 잘 못함 : 회원 등록 날짜의 총 일수가 아니라 회원 등록 최소 일자를 찾았었다..! (+ 10분) 3. 문제 풀이 로직문제 풀이 로직 설명회원 등록을 할 수 있는 날짜의 갯수를 세면 된다!..
[JS|해시] 프로그래머스 42576번. 완주하지 못한 선수
·
💾 자료구조 & 알고리즘/문제 풀이
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 입력과 출력입력마라톤에 참여한 선수들의 이름이 담긴 배열 participant ( 1 ≤ n ≤ 100,000 )완주한 선수들의 이름이 담긴 배열 completion ( n -1 )출력완주하지 못한 선수의 이름 return 2. 문제 풀이 로직문제 풀이 로직 설명 마라톤에 참여한 선수들의 이름들이 담긴 배열 participant에서 완주하지 않은 선수의 이름을 출력해야 한다.  참여 선수 명단 participant 배열을 해시테이블 형태로 바꾼다.해시테이블은 JS의 Object 형태로 만든다. Key(키) ..