분류 전체보기 337

Docker란? [파이썬 가상환경 vs 도커 컨테이너]

우선 참빛 설계의 사회적 약자를 위한 '음성인식 키오스크'를 주제로 UMC2기 Node 서버 팀원들과 프로젝트를 하던 중 필요성을 느꼈다.그래서 Docker가 무엇인지 간단하게 알아 보자 ! 프론트와 백엔드에서 노드 서버 구축 후 ai 라이브러리들을 사용하여 자연어처리를 하기 위해  파이썬으로 flask 서버를 구축 하기로 했다. 파이썬을 사용하기 위해 셋업을 하던 중 결국 개발 환경 문제를 해결 하지 못하였다.파이썬 코드를 플라스크 서버에서 사용하기 위해  파이썬 가상환경 세팅을 통일을 하는 부분에서 문제를 직면하였다. 아나콘다로 배포할 경우 mac사용자가 제작한 환경을 윈도우 사용자에게 공유할 수 없었다.또한 같은 mac 유저 끼리도 pip 버전이 차이가 나면 pip명령어로 설치한 konly, Mec..

Next12 [Data Fetching] (getStaticProps, getStaticPaths, getServerSideProps)

보통 리액트에서는 데이터를 가져올 때 useEffect안에서 가져온다.하지만 Nextjs에서는 다양한 방식이 있다.(useEffect도 가지고 올수 있다.) getStaticProps(ISR)Static Generation으로 빌드(build)할 때 데이터를 불러온다(미리 한번에 만들어줌) getStaticPaths(SSG)Static Generation으로 데이터에 기반하여pre-render시 특정한 동적 라우팅 구현(pages/post/[id].js)  getServerSideProps(SSR)Server Side Rendering으로 요청이 있을 때 데이터를 불러 온다.(계속)  getStaticProps- getStaticProps 함수를 async로 export 하면, 리턴되는 props를 가지..

NextJS란 ? [SSR,CSR,SSG,ISR,Pre-Rendering,Hybrid]

React의 SSR(server side rendering)을 쉽게 구현할 수 있게 도와 주는 간단한 프레임워크이다.리액트로 개발할 때 SPA(single Page Application)을 이용하며 CSR(Client side Rendering)을 하기 때문에좋은 점도 있지만 단점도 있는데 그 부분이 바로 검색엔진 최적화(SEO)이다.CSR을 하면 첫페이지에서 빈 html을 가져와서 JS파일을 해석하여 화면을 구성하기 때문에 포털 검색에 거의 노출 될 일이 없다.하지만 Next.is에서는 Pre-Rendering을 통해서 페이지를 미리 렌더링 하며 완성된 HTML을 가져오기 때문에사용자와 검색 엔진 크롤러에게 바로 렌더링 된 페이지를 전달할 수 있게 된다.리액트에서도 SSR을 지원하지만 구현하기에 굉장히..

[그래프] -컴퓨터 개수

컴퓨터 개수 현수는 종합학원에 다니고 있습니다. 현수가 다니는 종합학원은 서버 컴퓨터가 있는 큰 교실 과 수학을 공부하는 작은 교실로 되어 있다. 서버 컴퓨터가 있는 큰 교실의 모든 컴퓨터는 서 버와 직간접적으로 연결되어 인터넷이 되지만 수학교실에 있는 컴퓨터들은 서버와 연결되어 있지 않아 인터넷은 되지 않는다. 서버 컴퓨터는 1번 컴퓨터이다. 1, 2, 3, 4, 5, 6번 컴퓨터는 인터넷이 되지만 7, 8, 9, 10, 11번 컴퓨터는 수학교실에 있는 컴퓨터들로 인터넷이 되지 않는다. 수학교실에 있는 컴퓨터들끼리는 서로 연결이 되어 있을 수도 있고, 연결이 되어 있지 않을 수도 있다. 매개변수 n에 학원의 컴퓨터 총 개수가 주어지고, 매개변수 edges에 컴퓨터간 연결정보가 주 어지면 현수가 다니는 ..

[그래프]- 인접 행렬, 인접 그래프

• 그래프는 G(V, E)로 정의하고, V(Vertext : 정점)과 E(Edge : 간선) 의 집합을 의미한다. • 연결되어 있는 원소들간의 관계를 표현하는 자료구조이다. 인접행렬 2차원 배열을 이용해 그래프를 표현하는 방법 1) 무방향 그래프 입력 형식 : edge = [[1, 2], [1, 3], [2, 4], [2, 5], [3, 4]] graph = [[0] * (n+1) for _ in range(n+1)] for [a, b] in edge: graph[a][b] = 1 graph[b][a] = 1 2) 방향 그래프 입력 형식 : edge = [[1, 2], [1, 3], [2, 5], [3, 4], [4, 2]] graph = [[0] * (n+1) for _ in range(n+1)] fo..

[BFS] -검정색 영역구하기

검정색 영역구하기 5 * 5 이차원 배열에 모니터 화면을 표현합니다. 모니터의 화변은 최초 검정색과 흰색으로만 표현되어 있습니다. 검정색은 1, 흰색은 0으로 표현됩니다. 상하좌우로 1(검정색)이 연결되어 있으면 한 영역으로 간주합니다. 화면의 격자 정보가 위와 같다면 검정색으로 칠해진 영역은 2곳입니다. 매개변수 board에 모니터 화면의 격자정보가 주어지면 검정색으로 칠해진 영역은 총 몇 개가 있는지 구하여 반환하는 프로그램을 작성하세요. 제한사항: • 검정색 영역은 1개 이상 반드시 존재합니다. 나의 코드 from collections import deque def solution(board): answer = 0 dx=[-1,0,1,0] dy=[0,1,0,-1] dq=deque() for i in..

[BFS] -최소점프

최소 점프 현수는 놀이터에서 놀다가 집으로 가려고 합니다. 놀이터의 위치와 집의 위치가 수직선상의 좌표 점으로 주어집니다. 놀이터는 수직선상의 0지점입니다. 현수는 놀이터에서 스카이콩콩을 타고 점프를 하면서 집으로 이동하려고 합니다. 점프는 다음과 같은 규칙으로 합니다. 1) 현재 지점에서 앞으로 +1 만큼 점프이동할 수 있습니다. 2) 현재 지점에서 뒤쪽으로 -1 만큼 점프이동할 수 있습니다. 3) 현재 지점에서 앞쪽으로 +5 만큼 긴 점프이동을 할 수있습니다. 매개변수 home에 현수의 집의 위치가 주어지면 놀이터에서 집까지 최소 몇 번의 점프로 집에 도착할 수 있는지 최소 점프횟수를 구하여 반환하세요. 제한사항: • 수직선의 좌표는 0부터 10,000까지입니다. • 현수가 집으로 반드시 갈 수 있습..

[DFS] -픽셀수 구하기

픽셀수 구하기 5 * 5 이차원 배열에 모니터 화면을 표현합니다. 모니터의 화변은 최초 검정색과 흰색으로만 표현되어 있습니다. 검정색은 1, 흰색은 0으로 표현됩니다. 상하좌우로 1(검정색)이 연결되어 있으면 한 영역으로 간주합니다. 화면의 격자 정보가 위와 같다면 검정색으로 칠해진 영역은 2이고, 첫 번째 영역의 픽셀수(격 자수)는 5개이고, 두 번째 영역의 픽셀수는 3개입니다. 매개변수 board에 모니터 화면의 격자정보가 주어지면 검정색으로 칠해진 각 영역의 픽셀수를 순서대로 배열에 담아 반환하세요. 영역의 순서는 각 영역의 행번호, 열번호가 가장 작은 픽셀 을 기준으로 행번호가 작은 것부터이며 행번호가 같을 경우 열 번호가 작은 영역 순으로 배열 에 담습니다. 나의 코드 dx=[-1,0,1,0] ..

[DFS] -검정색 구하기

검정색 영역구하기 5 * 5 이차원 배열에 모니터 화면을 표현합니다. 모니터의 화변은 최초 검정색과 흰색으로만 표현되어 있습니다. 검정색은 1, 흰색은 0으로 표현됩니다. 상하좌우로 1(검정색)이 연결되어 있으면 한 영역으로 간주합니다. 화면의 격자 정보가 위와 같다면 검정색으로 칠해진 영역은 2곳입니다. 매개변수 board에 모니터 화면의 격자정보가 주어지면 검정색으로 칠해진 영역은 총 몇 개가 있는지 구하여 반환하는 프로그램을 작성하세요. 제한사항: • 검정색 영역은 1개 이상 반드시 존재합니다. 나의 코드 def DFS(x,y,board): board[x][y]=0 dx=[-1,0,1,0] dy=[0,1,0,-1] for k in range(4): nx=x+dx[k] ny=y+dy[k] if 0

[스택과 큐] - 고장난 프린터

고장난 프린터 현수가 다니는 회사의 프린터가 고장이 나서 프린트를 요청한 순서대로 프린트를 하는게 아니 라 약간 이상은 규칙에 의해서 프린트를 합니다. 이상한 규칙은 다음과요청한 순서에서 먼저 이 규칙을 반복하면서 만약 프린트를 요청한 [3, 1, 4, 5, 2, 6, 7] 3번, 1번 작업을 프린트 하고, 4번 작업은 맨뒤로 보냅니다. [5, 2, 6, 7, 4] 같습니다. 2개의 작업을 프린트하고, 3번째 작업은 순서상 맨 뒤로 보내버립니다. 프린트를 합니다. 작업번호 순서가 아래와 같다면 5번, 2번 작업을 프린트 하고, 6번 작업을 맨뒤로 보냅니다. [7, 4, 6] 7번, 4번 작업을 프린트 하고 6번 작업을 맨뒤로 보냅니다. [6] 마지막으로 6번 작업을 프린트합니다. 매개변수 nums에 프린..