본문 바로가기

전체 글79

스택(Stack) 개념 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)이다. 구현 스택(Stack)는 연결리스트(Linked List)로 구현이 가능하다. 추가와 삭제를 같은 방향에서 하는 자료구조 단점 크기를 동적으로 변경하지 않는 이상 언제 오버플로우가 일어나도 이상하지 않다. (물론 위 경우는 push가 많은 경우이다.) Java 라이브러리 - 스택(Stack) peek() - 스택의 맨 윗 값을 얻지만 삭제하지 않는다. pop() - 스택의 맨 윗 값을 얻고 삭제한다. push(e) - 요소를 스택의 맨 위에 넣는다. References https://docs.oracle.com/javase/7/docs/api/java/util/Stack.html Stack (J.. 2019. 10. 6.
카카오 프렌즈 컬러링북(프로그래머스, Java) 문제링크: https://programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 | 프로그래머스 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 알고리즘 설명: 먼저 그림의 영역을 탐색하는 문제이므로 어떤 탐색방법을 선택할지 고민하였다. BFS와 DFS 방법중에 BFS가 주변탐색과 속도에서 더 용의하므로 BFS 탐색방법을 사용하였다. 문제에서 그림의 크기가 그렇게 크지않아서 큐 or 스택 둘중 아무거나 사용해도 될 것이라 판단하여 큐를 사용하였다. X 위치가 들어갈 큐, Y 위치가.. 2019. 10. 6.
Front end Javascript AJAX(Asynchronous Javascript And XML) 비동기적 웹 서비스를 개발하기 위한 기법 쉽게 말해서 페이지 이동 없이 서버에 요청을 보내고 응답을 받는 기술 AJAX 요청은 보통 jQuery나 axios 같은 라이브러리를 이용 밑에 코드는 자바스크립트가 기본으로 제공하는 방식으로 요청하는 방법이다. 프론트엔드에는 ES2015+ 코드를 사용할 수 없는 경우(IE)가 있으므로 ES5 사용 onreadystatechange 대신 onload와 onerror로 성공과 실패인 경우를 구별할 수 있다. //서버로 데이터(JSON으로)를 같이 보내는 POST 요청의 경우 위 코드에서 3가지를 추가하면 된다. //#1 var data={ name: 'kwon', birth: 1995, }; //#.. 2019. 10. 4.
알아두어야 할 Javascript Javascript에서 변수 선언할 때 쓰였던 var는 이제 const 와 let으로 대체 되었다. var과 const, let의 차이점 var은 함수 스코프를 가지고 const와 let은 블록 스코프를 사용한다. 블록의 범위는 if, while, for, function 등의 중괄호이다. 따라서 블록 범위 밖에서는 사용할 수 없다. const와 let의 차이점 const는 한 번 대입하면 다른 값을 대입할할 수 없습니다.(초기화 시 값을 대입하지 않으면 에러 발생) let은 초기화 했던 변수에 다른 값을 대입해야하는 경우에 사용 큰, 작은따옴표로 감싸는 기존 문자열과는 다르게 백틱으로 감싸는 새로운 문자열이 생겼다. ex) `${var1} 더하기 ${var2}는 '${result2}'`; //1 더하기.. 2019. 10. 3.
큐(Queue) 개념 컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식, 나중에 집어넣은 데이터가 먼저 나오는 스택과는 반대되는 개념 구현 큐(Queue)는 연결리스트(Linked List)로 구현이 가능하다. 연결리스트란, 각 노드가 데이터와 포인터를 가지고 있고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조 단점 poll해도 메모리가 비어지는 것이 아니라 값이 들어 있던 부분에 null이 들어가고 front위치만 뒤로 옮겨 지기 때문에 추가로 offer하려고 하면 overflow가 발생한다. 이 단점을 보완한 것으로 원형큐 or 환영큐가 있다. Java 라이브러리 - 큐(Queue) Java 라이브러리에서 큐(.. 2019. 10. 1.
퀵 정렬(Quick sort) 퀵 정렬이란? 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. n개의 데이터를 정렬할 때, 최악의 경우에는 O(n2)번의 비교를 수행하고, 평균적으로 O(nlogn)번의 비교를 수행 수행속도가 매우 빠르다. 설명 임의의 수를 pivot(피봇)이라는 이름으로 기준을 잡는다.(pivot은 중간값이 적절) pivot값을 기준으로 pivot값보다 작은 값은 pivot 앞으로 큰 값은 뒤로 가게 값들의 위치를 바꾼다. 이 과정이 마무리되면 pivot은 중간에 들어가 있게 되어 있다.(중간값이 적절한 자리를 찾음) pivot을 기준으로 좌우로 나누고(분할) 나눠진 리스트에 대해서 다시 1, 2, 3 과정을 반복한다(재귀). 예시 피벗은 p, 리스트 왼쪽.. 2019. 9. 30.