분류 전체보기 259

[알골90제] 63번 - 인접행렬(가중치 방향그래프) / 무방향그래프, 방향그래프

* 인접행렬은 그래프를 표현하는 방법 - 정점 node / vertex - 간선 edge - 그래프는 정점과 간선의 집합 무방향그래프 인접행렬로 만드는 법 1) 5 -> 정점의 개수 6 -> 간선의 개수 - 무방향은 1->2 / 2->1 둘다 가능함 - 2차원 배열에 그래프의 연결정보를 넣어주는 것 - 2차원 배열의 행/열 번호가 정의 번호와 1:1대응임 2) 배열은 전역 변수를 잡아서 0으로 초기화 시킴 3) 1,2를 읽었으면 2차원 배열의 (2.1) , (1,2) 둘다 1을 넣어줌 4) 행이 출발 정점, 열이 도착정점 방향그래프 인접행렬로 만드는 법 1) 1->2로만 간다는 것, (1,2)만 체크함 2) 2 5 는 2->5로 가는 것, (2, 5)만 체크함 반대로 체크하게 하면 암됨! 가중치 방향그래..

[WEB] JavaScript : 객체 / js파일쪼개기 / 라이브러리와 프레임워크

객체 - 객체는 정리정돈의 수단 - 많아진 코드를 잘 정리하기 위해서 => 함수를 씀 - 함수와 함수와 연관된 변수들이 많아지면 같은 이름으로 그룹핑해서 잘 정리정돈 하기위한 도구 => 객체 - 배열은 정보를 담는 그릇이면서 순서대로 정보가 저장됨 - 객체는 이름이 있는 정리정돈 상자 - 객체에 속해 있는 함수 == 메소드(method) - 객체에 속해 있는 변수 == 프로퍼티(property) JS파일 추가 JS파일로 쪼개는 것이 효율적이고 시간도 돈도 적게 드는 방법임 - 웹페이지를 로드할 떄 js, html, 2번 로그인 해야한다 - 웹서버 입장에서 나쁜 일 => 접속은 적을 수록 좋아서 - 그럼에도 불구하게 이렇게 파일을 쪼개는 것이 훨씬 좋음 - WHY? 캐시 때문에. - 한번 웹 브라우저에 다..

[React] Front-End 2019.08.03

[알골90제] 62번 - 병합정렬 : 분할정복 (복습필수ㅠㅠ)

- 32번 복습하기 - 분할정복? https://kugistory.net/76 분할정복법 (Divide and Conquer) 알고리즘 영역에서 분할정복법(Divide-and-Conquer)은 말 그대로 주어진 문제를 분할하여 해결하는 방법을 말한다. 즉, 한 번에 해결하기 어려운 문제를 작은 단위의 부문제들(subproblems)로 쪼개어 해결하는 방.. kugistory.net https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html [알고리즘] 합병 정렬(merge sort)이란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io *문제 병합정렬로 주어진..

[알골90제] 61번 - 특정 수 만들기 : DFS (MS인터뷰)

* 문제 N개의 원소로 구성된 자연수 집합이 주어짐 집합의 원소와 +, - 연산을 사용하여 특정수인 M을 만드는 경우가 몇가지 있는지 출력하시오. 각 원소는 연산에 한번만 사용한다. - 입력예제 4 12 2 4 6 8 => 원소 4개로 + -를 조합하여 12를 만드는 경우의 수는 몇가지? 경우가 없다면 -1 출력 * 문제 풀이 2를 보면 +2 -2 X 와 같은 3가지 경우 적용가능 4도 마찬가지 +4 -4 X 와 같은 3가지 경우 적용 가능 -2 +6 +8 = 12 은 어떻게 나오나? 깊이 탐색으로 모든 경우의 수 탐색해서 가능 => 완전탐색 - 레벨 5되고 종료! * 코드 구현 //61번 - 특정 수 만들기 #define _CRT_SECURE_NO_WARNINGS #include #include int..

[알골90제] 60번 - 합이 같은 부분집합 : DFS (아마존인터뷰)

* 문제 N개의 원소로 구성된 자연수 집합이 주어짐 이 집합을 두개의 부분집합으로 나눔 ex. 1 3 5 6 7 10 을 1 3 5 7 과 6, 10 으로 그리고 두 부분집합의 합이 같은 경우가 존재하는지 확인 부분집합의 합이 같은 경우가 있다면 YES 출력 아니면 NO 출력 단, 입력에서 원소는 중복되지 않는다. * 풀이 - 재귀함수를 돌리면서 부분집합을 구함 - 남아있는 원소들 즉, 사용하지 않은 부분집합도 만들어짐 - total에다가 입력받은 원소를 다 더함 - 재귀로 부분집합을 만들어서 합을 만듬 sum - 남아 있는 원소들의 합은 total - sum 이 같으면 두 부분집합이 같은 것임 - 두 부분집합의 합은 같아야 하기 때문에 한쪽의 부분집합의 합이 절반이상이면 항상 NO됨 (다른 한쪽이 작아..

[알골90제] 59번 - 부분집합 MS인터뷰 : DFS 깊이우선탐색

문제: 자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램을 작성하세요. 재귀를 이용한 완전탐색을 하며, 이진트리 전위순회 방식으로 출력하시오. 단 공집합은 출력X 입력 3 출력 1 2 3 1 2 1 3 1 2 3 2 3 *풀이 : 전위순회: 루트가 가장먼저 순회되는 것 => 왼쪽자식 => 오른쪽자식 - LEVEL 1 2 3 4로 두기 => L로 컨트롤하기 - ch 배열은 0으로 초기화 - 왼쪽으로 자식함수 넘어갈때는 체크 1, 오른쪽은 체크 0하면서 호출한다. - ch의 인덱스번호를 원소값으로 보자. - if(L == n+1) 종료지점, 여기서 ch배열을 찍어준다. 1 2 3 - D(3)으로 다시갔다가 D(4)로 갈때 ch[L] = 0을 넣는다 L은 이때 3임 -..

[알골90제] 58번 - 이진트리 깊이우선탐색(DFS)

- 이진트리 : 기본구성이 부모노드, 왼쪽 자식노드, 오른쪽 자식노드, 3개가 기본구성 - 가정: 부모노드에서 *2하면 왼쪽자식 부모노드에서 *2+1하면 오른쪽 자식 - 재귀함수로 탐색할 것임 - 깊이우선탐색이 무엇인가? : 출발된 노드에서 연결된 노드중에 아무거나 하나를 선택해서 방문하는 것임 그러다 더이상 갈곳이 없다면, 되돌아가서 가지 않았던 노드로 가는 것 전위순회: 부모노드 먼저 출력 -> 왼쪽 -> 오른쪽 자식 출력 중위순회: 부모노드를 중간에 출력하면 중위 순회. 루트노드를 언제 출력하나가 기준임. 왼쪽 자신 먼저 출력->부모노드->오른쪽자식 출력 후위순회 출력: 왼쪽 출력->오른쪽 출력-> 부모출력 코드 구현 - 57번에서 배운 재귀/스택과 유사! - 9번 라인까지 기억되고 넘어감, 재귀가..

[WEB] CSS기초 / JavaScript 리팩토링, 배열, 반복문, 함수,객체

자바스크립트 간략 소개 - 웹페이지도 동적으로 사용자와 상호작용하길 바랬다. => 자바스크립트가 태어남 - HTML을 이용해서 웹을 만든 후에 => 자바스크립트를 사용해서 상호작용할 수 있게 만듬 - HTML이 정보라는 멈춰 있는 이미지를 그려놓은 것이라면, 자바스크립트는 그 그림을 움직이게 하는 역할 => 자바스크립트는 사용자와 상호작용하는 언어 => 자바스크립트는 HTML을 제어하는 언어 목표 - 문법을 배워 나가는 것이 아니라, 기능을 구현하는 과정에서 문법을 익히는 것 자바 스크립트가 올 것이다. => 자바스크립트 이벤트 검색 방법 Google: javascript keydown event attribute 자바스크립트 데이터 타입 TypeResult Undefined "undefined" Nul..

[React] Front-End 2019.07.31

[알골90제] 57번 - 재귀함수(STACK) - 2진수 출력

- 스택의 가장 위에 있는 함수가 실행되는 함수다. - D(0)이 실행되면 해당 함수는 x==0이므로 종료됨 - 그러고 맨위의 D(0)이 스택에서 빠짐 - 그다음 스택 최상위 순으로 D(1) - line9까지 하고 넘어왔기 때문에 나머지 line10 마저하고, 함수를 다했으면 스택에서 빠진다. - 재귀는 스택이 비는 순간 main 함수로 옴!!! // 57번 - 재귀함수 이진수 출력 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; void recur(int x) { if (x == 0) return; else { recur(x/2); printf("%d", x%2); } } int main() { int n; scanf("%d", &n); r..