본문 바로가기
반응형

IT 톺아보기80

플로이드-와샬 알고리즘 해당 알고리즘은 그래프 이론에서 착안된 이론 중 하나로써 반의 가중치가 양수 뿐만 아니라 음수인 경우의 가중치를 가지는 이동 경로에서도 사용할 수 있어 이를 통해 최단 경로를 찾는 알고리즘이다. ​ 플로이드-와샬 알고리즘 자체는 경로를 반환하지 않지만 약간의 수정 작업을 거친다면 경로까지 반환할 수 있는 알고리즘을 만들 수 있다. ​ 해당 알고리즘 같은 경우는 각 꼭지점 쌍을 지나는 그래프의 모든 경로를 비교하기 때문에 3개의 중첩 for문이 사용된다. -> 이 때문에 시간복잡도가 O(n^3)이다. ​ 기본적으로 ShortPath{최단거리}(I, J, 0) = w(i, j) 이고, 이를 재귀적으로 이용할 경우, ShortPath(i,. J, k) = mininum(ShortPath(i, J, k - 1).. 2022. 8. 9.
OSI 7계층 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층 간 상호 작동하는 방식을 정해 놓은 것 개요 통신이 일어나는 과정을 7단계로 크게 구분하여 한 눈에 들어올 수 있도록 정의했기 때문에 단계별로 파악할 수 있음. 계층 구성 물리 계층(허브, 리피터) 네트워크 데이터가 전송되는 물리적인 매체. 데이터는 0과 1의 비트열로 ON, OFF의 전기적 신호 상태로 이루어져 있음. 연결을 설정 및 종료하고 통신 자원을 공유하는 수단을 제공하며 디지털에서 아날로그 혹은 그 반대로 신호를 변환하는 역할. OSI 계층에서 가장 복잡한 계층으로 간주 데이터링크 계층(브리지, 스위치, 이더넷) 물리적인 네트워크를 통해 데이터를 전송하는 수단을 제공. 1홉 통신을 담당한다고도 말함. 주목적은 물리적인 장치를.. 2022. 8. 8.
백준 1991번 트리 순회 - python 해당 문제는 이진 트리의 전위 순회, 중위 순회, 후위 순회를 이해하고 있는지에 대한 문제라고 생각한다. 재귀를 이용해서 문제를 풀어 나갔는데, edge의 node들을 defaultdict에 리스트 형태로 저장해서 탐색을 진행해 나갔다. 순회하는 방식은 동일하지만 언제 출력을 진행하는 가에 차이에 따라 전위, 중위, 후위가 결정 된다. 그래서 아래의 함수를 보면 동일한 방식을 채택하고 있지만, 출력문의 위치만 다른 것을 볼 수 있다. def pre_order(n): if n != '.': print(n, end='') pre_order(edge[n][0]) pre_order(edge[n][1]) def in_order(n): if n != '.': in_order(edge[n][0]) print(n, e.. 2022. 7. 26.
백준 2004번 조합 0개의 개수 - python 처음 해당 문제를 봤을 때 팩토리얼을 활용하여 문제를 풀어도 되지만 시간초과가 날 것 같다는 생각이 들었다. 그러나 정말 그런지 궁금하니 한번 돌려보자.. from math import factorial n, k = map(int, input().split()) number = factorial(n) // (factorial(k) * factorial(n - k)) i = 0 while True: if not number % (10 ** i): i += 1 else: print(i - 1) break 해당 코드로 실행하니 당연하게 시가 초과가 발생했다. 이를 해결하기 위해 다른 방법에 대해 고민을 해 본 결과, m과 n-m의 최소값 만큼 반복문을 실행하는 방식을 진행해 보았다. n, k = map(int.. 2022. 6. 20.
SSR과 CSR SSR이란 * server-side rendering으로 서버에서 사용자에게 보여줄 페이지에 대한 작업을 모두 수행한 뒤 보여주는 방식. * SSR을 사용하면 모든 데이터가 매핑된 페이지를 Client에게 바로 보여줄 수 있음. * 서버를 통한 페이지 구성이라 CSR보단 페이지 구성 속도는 늦어지지만 전체적으로 콘텐츠의 구성 완료 속도는 빨라짐. * 또한, SEO도 쉽게 구성할 수 있음. * front-end와 back-end를 REST API를 통해 느슨하게 연결할 수 있음. CSR이란 * client-side rendering으로 client 에서 페이지를 구성에 대한 작업을 수행하는 방식. * SSR보단 초기 전송되는 페이지의 속도는 빠름. * 서비스에 필요한 데이터를 client에서 추가적인 요청.. 2022. 6. 18.
DOM은 무엇인가? Document Object Model의 약자로 웹 페이지 내 모든 요소에 접근, 조작할 수 있는 표준 API 모델. -> 브라우저의 제작사, 버전, 플랫폼 언어에 의존하지 않고 객체 지향적으로 접근이 가능, -> 표준 프로퍼티 및 메소드를 통해, 접근 및 제어가 가능하도록 하는 기반 모델 DOM 설계 방침 -> 객체지향적 설계: HTML 문서 내 모든 요소를 객체화하여 표현하고 접근하도록 함. -> 문서를 트리 구조로 표현: HTML 문서를 텍스트가 아닌 트리 구조를 갖는 계층적 구조로 표현할 것. DOM 특징 * 웹 브라우저 등에 의존하지 않는 비의존적인 독립적 인터페이스를 제공 * 웹 페이지에 동적으로 접근 및 변경 가능. 스크립트를 사용하여 객체, 프로퍼티, 메서드, 이벤트를 통해 접근하고 컨텐츠.. 2022. 6. 13.
react란 프로젝트를 진행하게 되면서 react를 이용하게 되었는데 해당 라이브러리를 사용하는 데 많은 어려움이 있었다. 보다 높은 품질의 프로젝트를 나중에 진행하게 됐을 때 다른 팀원들에게 피해를 주지 않기 위해서 리액트에 대해 간단히 공부한 내용을 작성해봤다. 자바스크립트 라이브러리의 하나로서 UI를 만들기 위해 사용됨 페이스북과 개별 개발자 및 기업 공동체에 의해 유지보수 되고 있음 주로 SPA나 모바일 App 개발에 사용됨 (App의 경우 React Native가 있음) 이를 이용해 동적인 웹 페이지를 쉽게 만들 수 있음 특징 - 데이터와 템플릿을 결합해 화면을 생성하는 것 - 장점: 데이터 변화에 따른 성능 저하 없이 DOM 객체 갱신이 가능, 데이터 흐름이 부모에서 자식이므로 코드 이해가 쉽고 서비스 규.. 2022. 6. 12.
docker compose Docker Compose란? * 다중 컨테이너 도커 어플리케이션을 정의 하고 실행하기 위한 도구 Redis?? * Remote Dictionary Server의 약자로 메모리 기반의 키-값 구조 데이터 관리 시스템 이다. 비관계형 데이터베이스(NoSql)로 모든 데이터를 메모리에 저장하고 빠르게 조회가 가능 * 메모리에 저장하기 때문에 mysql 같은 것보다 빠르게 불러올 수 있고 영속적인 저장으로 서버를 재부팅 해도 데이터가 남아있다. docker run redis 를 통해 redis를 먼저 구동한다. 이후, 다른 터미널을 통해 docker를 실행하면 이러한 에러를 만나볼 수 있다. 이는 Redis 서버에 연결이 실패 됐다는 의미인데, 이는 서로 다른 컨테이너에서 실행을 시켜서 접근이 가능 하지 않다.. 2022. 6. 4.
m1에서 docker mysql 설치하기 기존 터미널에서 mysql을 docker에 실행할 때에는 ‘’’ docker run —name -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true ‘’’ 을 사용 했었는데, 해당 방식으로 m1에서 실행하게 되면 에러가 발생한다. ‘’’ Unable to find image ‘mysql:latest’ locally latest: Pulling from library/mysql docker: no matching manifest for linux/arm64/v8 in the manifest list entries. See ‘docker run —help’. ‘’’ 위의 에러처럼 docker의 mysql은 linux/arm64/v8을 지원하지 않기 때문에 따로 platf.. 2022. 6. 4.
반응형