본문 바로가기

모각독 Study/5기

(12)
[18주차] 6/24 ~ 6/30(SingleTon 패턴) 모각독 17주차 6/24 ~ 6/30  SingleTon 패턴- 인스턴스가 오직 하나임을 보장- 애플리케이션 전역에서 동일한 인스턴스 공유 가능  필요성 전역적 접근이 필요한 경우자원 절약: 동일한 인스턴스를 재사용상태 관리의 일관성 유지  장점전역적 접근 제공자원 절약일관된 상태 유지  단점테스트 어려움결합도 증가멀티쓰레드 환경에서 문제 발생 가능  예시 코드class Singleton { // 인스턴스를 저장할 스태틱 변수 static instance; // 생성자(Constructor)는 외부에서 호출할 수 없도록 설정 constructor() { if (Singleton.instance) { throw new Error("You can only create one ..
[17주차] 6/17 ~ 6/23(트리 단원 문제풀이 - 예상대진표) 모각독 17주차 6/17 ~ 6/23    프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  예상 대진표트리 단원이었으나 트리로 풀 수 없었음게임 참가자 수 N, 참가자 번호 A, 경쟁자 번호 BQ. A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번째 라운드에서 만나는지단, A번 참가자와 B번 참가자는 서로 붙게 되기 전까지 항상 이긴다고 가정 - 어차피 A와 B는 늘 이기므로,  홀수인지 짝수인지에 대해 고민했는데   Math.ceil()을 사용하면 한방에 다 해결되는거였음 - Math.ceil()을 쓰면 반올림 됨 var n = 8;var a =..
[16주차] JS 트리 순회(전위, 중위, 후위) 모각독 16주차 6/10 ~ 6/16  프로그래머스 트리 - 301p 트리 순회nodes = [1, 2, 3, 4, 5, 6, 7] 주어진 배열을 각각 트리의 전위 순회, 중위 순회, 후위 순회를 해야 함.    JS로 트리 구현을 어떻게 하는가? 1) 일단은 트리 노드를 구현할 클래스가 필요하다.//트리 노드 생성을 위한 클래스 class TreeNode {  constructor(value) {    this.value = value;    this.left = null;    this.right = null;  }}     2) 그 다음은 이진 트리를 만들어야 한다.//이진 트리 만드는 코드 function createBinaryTree(arr) {  if (!arr.length) return nu..
[15주차] 6/3 ~ 6/9 모각독 15주차 6/3 ~ 6/9  트리데이터 저장하고 탐색하기 유용계층 구조 표현시 사용나무 기둥에서 가지가 뻗어나가는 모습을 거꾸로 뒤집어 놓은 것배열은 선형 자료구조, 트리는 계층 자료구조노드: 트리를 구성하는 요소루트 노드: 가장 위에 있는 노드간선(에지): 노드와 노드 사이 이어주는 선부모 노드: 간선으로 직접 연결된 노드 중 상대적으로 위에 있는 노드자식 노드: 아래에 있는 노드형제 노드: 같은 부모 노드를 갖는 노드리프 노드: 자식이 없는 노드차수: 특정 노드에서 아래로 향하는 간선의 개수이진 트리: 모든 노드의 최대 차수가 2를 넘지 않는 트리(간선이 최대 2개인 트리) 전위 순회 과정부모 노드 - 왼쪽 자식 노드 - 오른쪽 자식 노드   중위 순회 과정왼쪽 자식 노드 - 부모 노드 - 오..
[14주차] 5/27 ~ 6/2 모각독 14주차 5/27 ~ 6/2  해시어떤 데이터를 찾을 때 가장 쉽게 떠올리는 것: 처음부터 끝까지 순차탐색But, 최악의 경우 탐색할 때마다 모든 데이터 살펴봐야 하므로 비효율적찾아야 할 값이 어디에 있는지 알아내려면?= 해시(hash) 탄생해시는 해시함수를 사용하여 변환한 값을 인덱스로 삼은 뒤,키와 값을 저장해서 빠른 데이터 탐색을 제공하는 자료구조단방향이라 키로 값 찾을 수 O값으로 키 찾을 수 X    완주하지 못한 선수 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr한명빼고 모두 다 완주participant[]에 모든 선수completion[]..
[13주차] 5/20 ~ 5/26 모각독 13주차 5/20 ~ 5/26 큐선입 선출먼저 줄 선 사람이 먼저 나감(First In First Out = FIFO)삽입은 Enquere(Add)꺼내는건 Dequeue(Poll)   요세푸스 문제N명의 사람이 원 형태로 서있음각 사람은 1부터 N까지 번호표를 가짐임의의 숫자 K가 주어졌을 때, K번째 사람을 제거 1) 기준: 1번 -> 인덱스 [0] -> 얘를 기준으로 K번째 사람을 없앰(인덱스니까 K-1)2) 다음 기준: 없앤 사람의 다음 사람(인덱스는 동일하게 K-1)3) 마지막 살아있는 사람의 번호 반환(1명 남을때까지 반복) => 원형 연결 리스트인가? JS에 원형 연결리스트가 없는데 어떻게 해결할 수 있을까   var n = 5;var people = [];var k = 2;for(le..
[11주차] 5/6 ~ 5/12 모각독 11주차 5/6 ~ 5/12   배열인덱스 0부터 시작1차원, 2차원, 3차원도 실제로는 1차원 공간에 저장= 차원과는 무관하게 메모리에 연속 할당- length: 배열의 전체 데이터 개수- clone: 배열 복사하여 새로운 배열 생성- Arrays.sort(): 배열의 모든 데이터 정렬 (원본 데이터 정렬)- Arrays.toString(): 배열 모든 데이터 String으로 반환- size(): ArrayList의 전체 데이터 개수 반환- isEmpty(): ArrayList에 저장된 데이터 없는지 여부 반환- Collections.sort(): ArrayList의; 모든 데이터 정렬  배열의 시간복잡도- 맨 뒤에 삽입시 O(1) = 다른 데이터 위치에 영향 X- 맨 앞에 삽입시 O(N) = ..
[9주차] 4/22 ~ 4/28 모각독 9주차 4/22 ~ 4/28 알고리즘의 효율 분석 시간 복잡도 🌟알고리즘 선정 기준? 시간 복잡도 1차원 배열 검색하기 1) 가장 빨리 찾는 경우 검색 시작 위치에 찾을 값이 바로 있는 경우 2) 가장 늦게 찾는 경우 찾으려는 값이 없거나, 가장 마지막에 위치하는 경우 알고리즘 수행 시간 측정법 1) 절대 시간 측정 시간 측정 e.g. 배열에서 검색하는 프로그램 작성->실행->결과까지의 시간 측정(코테에서 잘 사용X) 2) 시간 복잡도 측정 연산 횟수 최선/보통/최악 - 점근적 표기법: 입력 크기에 따른 연산 횟수의 추이를 활용해서 시간 복잡도를 표현하는 방법 (데이터가 N개니까 최대 N번의 연산을 해야 값을 찾을 수 O) - 빅오 표기법: 상한선 활용 e.g. 3x^2 + 5x: 빅오 표기 O(..
[7주차] 4/8 ~ 4/14 모각독 7주차 4/8 ~ 4/14 기본형 데이터와 참조형 데이터의 차이 1) 기본형 데이터의 변수 복사 1) 임의의 변수영역에 빈공간 확보(@1001) ~ 변수영역 ~ 이름(식별자): a 값: @3001 1-2) 숫자 1을 데이터영역에서 검색해보고, 없으므로 새로 빈공간에 저장(@3001) ~ 데이터영역 ~ 값: 1 2) 변수 복사를 위해, 변수영역에 빈공간 확보(@1002) ~ 변수영역 ~ 이름(식별자): b 값: @3001 2-2) 숫자 1을 데이터영역에서 검색해보고, 있으므로 그대로 사용(@3001) ~ 데이터영역 ~ 값: 1 2) 참조형 데이터의 변수 복사 1) 임의의 변수영역에 빈공간 확보(@1003) ~ 변수영역 ~ 이름(식별자): obj1 값: @3002 1-2) 기본형과 다르게, 데이터 그..
[3주차] 3/11 ~ 3/17 모각독 3주차 3/11 ~ 3/17 중첩된 참조형 데이터(객체)의 프로퍼티 할당 참조형 데이터의 프로퍼티에 다시 참조형 데이터를 할당하는 경우 var obj = { x: 3, arr: [3, 4, 5] }; 이렇게 주어지면 1) 컴퓨터는 우선 변수 영역에 obj의 값을 저장할 빈 공간 @1002를 확보 2) 데이터를 저장할 임의의 데이터 영역 @5001에 각 변수(프로퍼티)를 저장할 임의의 변수 영역을 지정 ex) x와 arr를 저장할 공간 3) 변수 영역 @7101에 x, @7102에 arr를 저장 4) 아까 x의 값은 3이었으니, 데이터 영역에서 x의 값인 3을 검색해봄 ⇒ 없음 데이터 영역 @5002에 3을 저장한 뒤, 해당 주소값을 변수 영역 @7101에 값으로 넣어줌 5) 다음으로 arr의 값은..