📜 CS 8

[네트워크] 제 1장 Network Programming - Socket의 이해

제 1장 Network Programming - Socket의 이해1.    Network programming이란?network이란? Computer network각 host(end-system)을 연결하여 통신을 가능케하는 연결망host(end-system): pc, mobile기기, laptoppc(x)/ws(o)통신 sw 탑재 여부Internet(internetwork)network들이 연결됨연결장치(router, geteway, bridge, repeater)들이 필요함Ip(internet protocol) 이용 연결- ip addressClient/serverClient: 서버에 정보나 서비스를 요청하고 응답을 기다리는 hostServer: client의 요청을 폐기, 요청에 오면 서비스를 제..

[알고리즘] 문제 해결 패턴 (4) 분할 정복 패턴

분할 정복 패턴주로 배열이나 문자열 같은 큰 규모의 데이터셋을 처리한다.(연결리스트나 트리가 될 수 있다.) 값을 찾기 위해 배열의 왼쪽에서 시작하여 오른쪽 끝까지 이동하는 것보다는 배열을 작은 조각으로 세분화하여 각 조각들을 어디로 이동시킬지 결정하는 작은 조각으로 세분화하여 각 조각들을 어디로 이동시킬지 결정하는 작업을 하겠다.즉! 큰 데이터 덩어리를 작은 조각으로 나누는것 예시탐색알고리즘의 전형적인 예이다. 이것은 정렬된 숫자를 지닌 배열을 취한다. 배열은 정렬된 상태여야한다. 입력된 search라는 함수는 값을 취하고 해당 값이 있는 위치를 반환시킨다. search([1,2,3,4,5,6],4) // 3 function search(arr, val) { for (let i = 0; i  o(n)..

[알고리즘] 문제 해결 패턴 (3) 기준점 간 이동 배열 패턴

기준점 간 이동 배열 패턴배열이나 문자열과 같은 일련의 데이터를 입력하거나 특정 방식으로 연속적인 해당 데이터의 하위 집합을 찾는 경우에 유용하다.  sliding window 접근법창문을 하나 만들어야 한다. 창문은 단일변수, 하위배열, 또는 필요한 경우 다른 문자열도 될 수 있다. 조건에 따라 창문을 이동시키며, 시작 위치에서 시작하면 보통 왼쪽에서 오른쪽으로 이동한다. 오른쪽에서 왼쪽으로 이동도 가능하고 가운데 위치에서 시작할 수 있다. 그러나 보통 창문을 왼쪽, 즉 요소의 시작 위치 또는 배열이나 문자열의 시작 위치에서 끝나는 위치로 이동한다.  규모가 큰 데이터셋에서 데이터의 하위 집합을 추척하는 문제에 유용하다.예시 문제정수의 배열과 n이라는 수를 받아들이는 maxSubarraySum이라는 함..

[알고리즘] 문제 해결 패턴 (2) 다중 포인터 패턴

다중 포인터 패턴인덱스나 위치에 해당하는 포인터나 값을 다음 특정 조건에 따라 중간 지점에서부터 시작 지점이나 끝 지점이나 양쪽 지점을 향해 이동시키는 것  👉🏻 배열이나 문자열과 같은 일종의 선형 구조나 이중 연결 리스트나 단일 연결 리스트를 만든다.👉🏻 한 쌍의 값이나 조건을 충족시키는 무언가를 찾는다.[-4, -3, -2, -1, 0, 1, 2, 5]"alksjdalksjdlkasjdlks" 참조값이란 인덱스를 가리키는 숫자인 i와 j같은 변수를 의미한다.j와 j를 시작하여 특정방향으로 이동할 수 있게 참조값을 사용하기도 한다. 포인터 변수는 배열이나 문자열의 특정 위치를 가리킨다.(포인터 변수는 두번째도 있으므로 서로를 향해 이동하거나 같은 방향으로 이동하든 끝에서부터 시작위치로 이동하든 ..

[알고리즘] 문제 해결 패턴 (1) 빈도수 세기 패턴

빈도수 세기 패턴자바스크립트의 객체를 사용해 다양한 값과 빈도를 수집한다.  이 패턴은알고리즘과 여러 데이터와 입력 값이 서로 비슷한 값으로 구성되어 있는지서로 간의 애니그램인지값이 다른 값에 포함되는지 여부를 비교하거나데이터를 입력값이나 두 개 이상의 빈도 혹은 특정하게 발생하는 빈도와 비교할 때 유용하다. 이를 좋은 접근법이자 패턴으로 만들어주는 것은 중첩된 루프와 관련 있거나 n의 제곱 시간을 사용하는 더 쉬운 해결책과 비교했을 때 n²이라 할 수 있다.관련 문제 예시두 개의 배열을 입력받는 same이라는 함수를 작성하세요. 이 함수는 첫 번째 배열의 각 값이 두 번째 배열에서 제곱된 값으로 존재하는 경우에 true를 반환해야 합니다. 값의 빈도도 동일해야 합니다.same([1,2,3], [4,1,..

[알고리즘] 문제해결접근법

알고리즘이란?특정 작업을 달성하기 위한 과정이나 일련의 단계를 의미 실력 향상 방법문제 해결을 위한 계획 만들기(문제에 접근하는 방법, 문제를 세분화하기 위한 전략)일반적인 문제 패턴을 파악 문제 해결 전략문제 이해문제를 내 방식대로 다시 말할 수 있는가?  문제를 해결하기 위해 어떤 입력이 필요한가?문제를 해결하면 어떤 출력이 나와야 하는가?출력을 입력에서 결정할 수 있는가? 즉, 문제를 해결하기에 충분한 정보가 있는가? (이 질문은 문제를 해결하려는 과정에서야 답할 수 있을 수도 있지만, 지금 이 단계에서 이 질문을 고려하는 것도 여전히 중요하다.)중요한 데이터 요소들을 어떻게 라벨링해야 할까?구체적 예시를 알아보기간단한 예시로 시작더 복잡한 예시들로 진행빈 입력값이 있는 예제를 살펴보는것잘못된 입력..

[알고리즘] 배열과 오브젝트의 성능평가

🤓 선수 지식으로는 빅오 표기법의 개념이 필요하다.(빅오 표기법: https://recordoftheday.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B9%85%EC%98%A4%ED%91%9C%EA%B8%B0%EB%B2%95) 객체의 빅오 표기객체는 언제 사용하냐정렬의 필요가 없을때빠른 접근, 입력과 제거를 원할function addUpTo(n) { let total = 0; for (let i = 1; i  빅오의 객체 표기입력 - O(1)객체에 키와 값을 추가하는 빅오 표기제거 - O(1)객체의 키를 제거하기 위한 빅오 표기탐색 - O(n)접근 - O(1)객체의 키에 접근하기 위한 빅오 표기탐색은 희귀하지만, O(N)은 N에 따라서 ..

[알고리즘] 빅오표기법

빅오표기법빅오표기법는 대략적으로 숫자를 세는 것이다. 입력된 내용이 늘어날 수록 알고리즘에 실행 시간이 어떻게 변하는지 설명해주는 방식이다. 어떤 function의 입력 값이 늘어나는 것과 function 실행 시간이 변하는 관계를 의미한다.알고리즘의 성능 평가를 하기 위해서 사용하드웨어의 영향을 받지 않는다.  즉, 입력의 크기와 실행시간의 관계를 의미(f(n)=n) | n의 값이 커질수록 실행시간도 늘어난다.(f(n)=n*n | 실행시간이 n의 제곱일 수도 있다. f(n) = 1 | n이 커져도 실행 시간에는 아무런 영향을 받지 않기에 항상 상수일 수 있다. (간단하게 표현하기 위해 1로 표시)f(n)이 완전이 다를 수도 있다. 빅오 표기법의 필요성여러가지 코드를 일반적으로 서로 비교하고 성능을 평가..

728x90