목록SSAFY (19)
꾸물꾸물 졔의 개발공부
AWS ? - 레퍼런스가 많다 . - 가상환경에서 잘 실행 된다 . - 어디서든 데이터에 엑세스 가능 - 확장 / 축소가 상대적으로 용이하다 . nginx mysql workbench 접속 mobaxterm : ubuntu@(mysql 주소) cd : 이동 ls : 파일 구조 확인 ll sudo vi default : 편집기 tab : 자동완성 java -jar d (tab) nohup java-jar d(tab)
[ 알고리즘 문제 출제 대회 ] : BFS ( 넓이우선탐색법) 알고리즘 기법을 접목시킨 문제 동률이와 로켓단의 포켓몬빵을 건 싸움수준 ㄹㅇ 실화냐 ? 진짜 세계관 최강자들의 싸움이다.. [문제] 동률이는 요즘 대란인 포켓몬빵을 찾기 위해 지도를 가지고 길을 나섰다. 지도는 N x M 크기의 직사각형으로 나타낼 수 있으며, 1 x 1 크기의 정사각형 칸으로 나누어져 있다. 각 칸은 장애물 또는 빈칸 또는 포켓몬 빵이 있는 목적지이다. 지도 바깥 영역은 벽이라 이동이 불가능하다. 동률이는 항상 지도의 가장 왼쪽 상단지점인 (1,1) 에서 출발한다. 포켓몬 빵은 경쟁자가 매우 많고, 하필 동률이는 어디든지 15초만에 이동이 가능한 로켓단과 경쟁을 해야한다. 동률이는 로켓단을 이기기위해 지름길인 빙판 지대를 통..
DFS - 깊이우선 탐색 : 루트노드에서부터 시작하여, 한방향으로 갈 수 있는데 까지 쭈~욱 내려가고 , 마지막을 만나면 마지막에 만난 갈림길로 가서 다른방향의 노드로 !!! 각 노드에서 탐색하는 방법이 동일함 ( 재귀 이용 가능 ) -> 한 노드에 대해 내가 가지고 있는 좌자식 노드와, 우자식 노드만 탐색함 [순회] -전위순회 : 부모 - 좌 - 우 -중위순회 : 좌 - 부모 - 우 -후위순회 : 좌 - 우 - 부모 [ 힙 ] 완전이진트리의 구조에서 이루어짐 ,, 빠르게 탐색이 가능 최대힙 : 루트노드가 가진 값이 키값 최대 , 부모노드 > 자식노드 유지 최소힙 : 루트노드가 가진 값이 키값 최소, 부모노드 완전 이진트리에서 마지막 인덱스 값 바로 뒤에 삽입한 후, 각..
비선형구조의 탐색 - BFS : 너비 우선 탐색 - DFS : 깊이 우선 탐색 [ BFS ] : 너비 우선 탐색 - 루트노드의 자식노드 먼저 탐색하고, 각 자식노드에 대해서 그 다음 자식노드 반복 ex) A 의 자식 B / C 가 있을 때 A -> B -> C -> B의 자식 - > C의 자식 ... 루트노드부터 시작하여 큐에 넣으면서, que.poll() 하여, 부모노드를 읽어드리고, 그것에 대한 자식노드들을 뒤에 add 왼쪽 노드는 que.poll() * 2 / 오른쪽 노드는 que.poll() *2 +1
[ 이진트리 ] : 모든 노드의 차수가 2이하인 트리 상위노드와 하위 노드의 비율이 1 : 2 이하 -> 현재노드를 기준으로 left/ right ( 1 : n 의 구조를 가진 트리들은, 각 노드가 가질 수 있는 자식의 수가 가변적으로 정해져 있지 않기 때문에 배열로 관리하기가 힘들다. 다양한 값에 따라 배열을 마음대로 늘리고 줄이고 할 수 없기 때문 ) 하지만 !! 1:2 의 구조를 가진 이진트리는 차수가 2로 제한되어 있기 때문에 배열로 표현하기가 쉽다 높이 i 에서 가질 수 있는 최대 갯수 : 2의 i 승 ( 모든높이에서 차수가 두개씩 뻗어나간 경우 ) 높이 h인 이진트리에서 노드 최소 갯수 : h + 1 ( 왼쪽 또는 오른쪽 편향으로 한쪽으로만 뻗어 나간 경우 ) 최대 갯수 : 2 의 ( h +1..
자료구조에는 크게 선형 / 비선형 구조가 있다 . 선형구조는 그동안 배워왔던 리스트나 배열 즉, 1 대 1 의 관계를 가지는 것들이 있다. 비선형구조는 '트리'나 '그래프' 처럼, 1 대 多 의 데이터 구조를 가지는 것들이 있다. [ 트리 ] : 여러개의 노드로 이루어진 계층형 구조의 자료구조 ( 루프가 없음 ) 트리는 하나의 ' 루트노드' 를 기준으로 가지를 뻗어나간다. 상위노드와 하위노드로 이루어지며, 일반적으로 하나의 상위노드에 여러개의 하위노드가 따라온다 . - 노드 (Node) : 트리의 구성요소로 ( 루트노드 : 최상위 / 단말노드 (leaf) : 최하위 ) - 형제노드 : 같은 부모노드를 가진 노드들 - 조상노드 : 하나의 노드를 기준으로 간선을 따라 올라가면서 루트노드까지 있는 모든 노드들..
리스트 : 순서를 가진 데이터의 집합 - 순차 리스트 : 배열을 기반으로 한 리스트 - 연결 리스트 : 메모리의 동적 할당 ( 즉 , 객체 ) 를 기반으로 한 리스트 [ 순차리스트 - ArrayList ] 삽입 : 중간에 값을 삽입, 기존의 있던 그 이후의 값들은 뒤로 한칸씩 밀려나게 됨 삭제 : 중간의 값을 삭제, 기존으 있던 그 이후의 값들은 앞으로 한칸씩 오게 됨 --> 연속적인 메모리 관리를 해야하기 때문에 삽입이나 삭제시 메모리의 이동이 필요 , 이러한 연산들이 많아지면 오버헤드가 발생하고 데이터 관리 소요시간이 증가하게 됨 --> 배열의 크기가 정해져 있기 때문에, 너무 크게 만들면 메모리 낭비 / 너무 작게 만들면 배열 복사 작업 많아짐 오쪼라고 ,,, 잘만들어라고 ,,, [ 연결리스트 - ..
스택 : 물건을 쌓아올리듯, 데이터를 차곡차곡 쌓아가는 자료구조 , 선형구조이다 (1 ㄷ 1 ) 입력과 출력이 한 곳에서 이루어 지기 때문에, 가장 먼저 들어온 데이터가 가장 나중에 나간다 = 후입선출 LIFO ( + 비선형구조 : 1 ㄷ 多 , 예를 들면 트리 같은 것 ) ( 기본 함수 ) - push : 데이터 삽입 - pop : 가장 위의 데이터를 삭제 하며, 삭제값 반환 -> 데이터의 크기 줄어듦 - peek : 가장 위의 데이터를 반환, 삭제는 하지 않음 -> 데이터 크기 그대로 유지 '' pop '' vs '' peek '' : pop은, 데이터를 삭제하는 것이고 peek은 단순 최상위 데이터 조회 - isEmtpy : 스택이 비어있으면 true 반환, 비어있지 않으면 false 반환 - si..