본문 바로가기
728x90

전체 글73

[알고리즘 문제 풀이] 퀵 정렬, 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 💡 퀵 정렬 (Quick Sort) - '찰스 앤터니 리처드 호어' 가 개발한 알고리즘. - 퀵 정렬은 불안정 저렬에 속하며, 다른 원소와 비교만으로 정렬을 수행하는 비교 정렬에 속한다. - 분할 정보 알고리즘의 하나로, 평균적으로 매우 빠른 속도를 자랑함. 방법 1) 리스트 안에 있는 한 요소를 서택한다. 이렇게 고른 원소의 크기를 피벗이라고 한다. 2) 피벗을 기준으로 피벗보다 작은 요소들은 왼쪽, 큰 요소들은 오른쪽에 옮긴다. 3) 부분 리스트들이 더이상 불가능할 때까지 반복한다. quickSort 문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr[i]는 정수 arr.length는 100,000 이하.. 2022. 6. 14.
[알고리즘 문제 풀이] 다음의 조건을 만족하면서 현재의 비밀번호('curPwd')를 새 비밀번호(newPwd)로 변경하는 데 필요한 최소 동작의 수를 리턴해야 합니다. 소수구하기 -> 에라토스테네스의 체 primePassword 문제 다음의 조건을 만족하면서 현재의 비밀번호('curPwd')를 새 비밀번호(newPwd)로 변경하는 데 필요한 최소 동작의 수를 리턴해야 합니다. 한 번에 한 개의 숫자만 변경가능하다. 4자리의 소수(prime)인 비밀번호로만 변경가능하다. 정리하면, 비밀번호가 계속 소수를 유지하도록 숫자 한 개씩을 바꿔갈 때 현재 비밀번호에서 새 비밀번호로 바꾸는 데 최소 몇 개의 숫자를 변경해야 하는지를 리턴해야 합니다. 입력 인자 1 : curPwd number 타입의 1,000 이상 9,999 이하의 자연수 인자 2 : newPwd number 타입의 1,000 이상 9,999 이하의 자연수 출력 number 타입을 리턴해야 합니다. 주의사항 4자리인 소수는 1,000 이상의 소수를 .. 2022. 6. 13.
BFS(Breadth-First Search) / DFS(Depth-First Search) 한국에서 미국으로 가는 비행기를 예약한다고 가정하고 BFS와 DFS를 비교해보자. 비행편에 따라 직항과 경유가 있고 경유를 하게 된다면 해당 항공사가 필요로 하는 공항에 잠시 머물렀다 가기도 한다. 경유를 하는 시간은 비행편마다 다르고, 경유지도 다르다. 이런 경우에 최단 경로를 구하는 방법을 알아보자. 💡BFS (Breadth-First Search) 한국을 기준으로 미국까지는 가는 방법을 정점부터 탐색한다. 그리고 더는 탐색할 정저이 없을때, 그 다음 떨어져 있는 정점을 순서대로 방문한다. 직항이라면 한국과 미국 사이에 어떠한 경유지도 없기 때문에 제일 가까운 정점에 미국이 있다. 경유지가 있다면 직항보다 거리가 멀다는 사실을 확인할 수 있다. 이렇게 너비를 우선적으로 탐색하는 방법을, BFS, Br.. 2022. 6. 13.
[알고리즘 문제 풀이] 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 💡 삽입 정렬 (Insertion Sort) : 삽입 정렬은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 삽입함으로서 정렬을 완성하는 알고리즘이다. 배열이 길어질수록 효율이 떨어지지만 구현이 간단하다는 장점이 있는 정렬 방법이다. 선택 정렬이나 거품 정렬과 같은 알고리즘에 비교하여 빠르며, 안정 정렬이고 in-place 알고리즘이다. insertionSort 문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr[i]는 정수 arr.length는 1,000 이하 출력 number 타입을 요소로 갖는 배열을 리턴해야 합니다. 배열의 요소는 오름차순으로 정렬되어야 .. 2022. 6. 10.
Docker가 무엇인가? 가상머신과의 차이점은? 💡Docker 가 무엇인가? 도커는 리눅스 컨테이너 기술을 기반으로 하는 오픈 소스 서비스이다. 도커를 통해 애플리케이션 실행 환경을 코드로 작성할 수 있으며, OS를 격리화하여 간리할 수 있다. 그럼 도커, 리눅스 컨테이너, 실행환경, 격리화는 무엇일까? By default, a container has no resource constraints and can use as much of a given resource as the host's kernel scheduler wllows. Docker provides ways to control how much memory, or CPU a container can use, setting runtime configuration flags of the doc.. 2022. 6. 10.
ORM이란? 💡ORM 이란? Object Relation Mapping 의 약자이다. 관계형 DB를 다룰 때, ORM을 사용한다면 우리가 관계형 DB를 객체 다루듯이 사용할 수 있다. 관계형 DB ORM 객체 데이터베이스의 통역사 정도로 생각할 수 있음. 장점은? - 객체를 사용해서 더 직관적으로 볼 수 있다. 관계형 DB를 객체 형태로 보니까 조금 직관적으로 볼 수 있는 것이다. 단점은? - ORM으로만 구현하기는 어렵다. 편리하지만 설계는 또 신중하게 해야 한다. 2022. 6. 9.
[JavaScript] 비동기처리 async/await 💡 비동기 처리 방식 - async/await 자바스크립트는 싱글 스레드 프로그래밍 언어이기 때문에 비동기처리가 필수적이다. 하나의 프로세스에서 오직 하나의 스레드로만 실행. 그렇기 때문에, 하나의 레지스터와 스택으로 표현이 가능하다.> 비동기 처리는 그 결과가 언제 반환될지 알 수 없기 때문에 동기식으로 처리하는 기법들이 사용되어야 하는데, 대표적으로 setTimeout, callback, promise 등이 있다. 세가지 모두 비동기 코드를 작성할 수 있지만, 콜백 헬의 문제를 해결할 수 없었기에, ES8 부터는 보다 간단하고 가독성 좋게 비동기 처리를 동기처럼 구현하는 async/await이 도입되었다. async/await 은 Promise를 기반으로 동작하며, then/catch/finally와.. 2022. 6. 9.
IM-SPRINT-AUTH-OAUTH, server 쪽 구현하기 OAuth 2.0이란? OAuth는 언제 왜 사용할까? 🌈 OAuth 2.0 웹이나 앱에서 흔히 찾아볼 수 있는 소셜로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현된다. 전통적으로 직접 작성한 서버에서 인증을 처리해주는 것과는 달리 OAuth는 인증을 study-with-ej.tistory.com 지난 블로그에도 정리해두었던 것 처럼 Oauth는 웹이나 앱에서 흔히 찾아볼 수 있는 소셜 로그인 인증방식이다. 이번에는 깃허브에서 제공하는 OAuth를 이용해 스프린트를 진행해보았다. 이 스프린트도 한줄한줄 정리해보면서 개념을 정리해 보았다. 💡server-oauth/controller/callback.js ✓ 다시 한 번 정리해보는 axios : Axios는 브라우저, Node.js를 위한 Pro.. 2022. 6. 9.
IM-SPRINT-STATESAIRLINE-SERVER 💡statesairline/app.js // express, cors 사용하기 const express = require("express"); const cors = require("cors"); const app = express(); // 모든 서버는 요청을 받을수 있는 포트 번호를 필요로 합니다. // HTTP server의 표준 포트는 보통 80 번 이지만, 보통 다른 서버에서 사용중이기 때문에 접근할 수 없습니다. // 따라서 우리는 보통 테스트 서버 포트로 3000, 8080, 1337 등을 활용합니다. // PORT는 아파트의 호수와도 같습니다. 서버로 요청을 받기 위해서는 다음과 같이 포트 번호를 설정 합니다. // (* 때에 따라 다른 포트번호를 열고 싶다면, 환경 변수를 활용 하기도 합.. 2022. 6. 8.
728x90