분류 전체보기
-
[TIL] Python 쉬운 알고리즘 풀기 + 메소드 정리언어, 프레임워크/Python 2020. 8. 15. 17:53
프로그래머스 level 1 문제: https://programmers.co.kr/learn/courses/30/lessons/12931?language=python3 코딩테스트 연습 - 자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출 programmers.co.kr sum(iter): 기본 내장 함수. iter의 각 요소를 더함 map(func, iter): 기본 내장 함수. iter의 각 요소에 func 적용됨 문제: https://programmers.co.kr/learn/cours..
-
[WEB] HTTP 통신의 개념부터 상태 코드까지 정리해보자CS/네트워크 2020. 8. 13. 16:37
틀린 내용을 발견하셨다면 댓글 부탁드립니다! 1. HTTP란? HTTP(HyperText Transfer Protocol)는 클라이언트와 서버가 웹에서 이미지, 텍스트, 오디오, 비디오 및 다른 모든 종류의 파일과 같은 데이터를 주고받을 때 지켜야 되는 프로토콜(규칙)이다. 인터넷을 사용하는 모두가 동의한 규칙이니 우리는 이를 따라야 한다. 규칙은 지키라고 있는 것! HTTP라는 규칙을 지키면서 웹 상에서 통신하는 과정은 다음과 같다. 만약 우리가 아마존에서 뭔가 살게 있다고 해보자. 크롬 브라우저를 통해 www.amazon.in을 입력한다면, 브라우저(Client)는 웹 서버(Server)에게 요청(Request)할 것이다. 서버는 브라우저의 요청에 응답(Response)하여 HTML, CSS, 이미지..
-
이진 탐색 알고리즘 (Binary search Algorithm)알고리즘, 자료구조/정리 2020. 8. 10. 10:32
이진 탐색 알고리즘(이분 탐색 알고리즘)은 정렬된 배열에서 특정 값의 위치를 찾는 알고리즘이다. 맨 처음 단계에서 정렬된 배열의 중간의 값을 임의의 값으로 선택한다. 선택한 임의의 값과 찾고자 하는 값의 크고 작음을 비교하여 탐색하는 방식이다. 만약 임의의 값이 찾는 값보다 클 경우, 임의의 값은 새로운 최댓값이 된다. 반대로 임의의 값이 찾는 값보다 작으면 해당 값은 새로운 최솟값이 된다. 검색 원리상 정렬된 리스트에만 사용할 수 있다는 단점이 있으나, 검색이 반복될 때마다 목표값을 찾을 확률은 두 배가 되므로 속도가 빠르다(O(l ogN)). BinarySearch(A[0..N-1], value, low, high) { if (high value) return BinarySearch(A, value,..
-
프로그래머스 알고리즘 복습하기알고리즘, 자료구조/프로그래머스 2020. 8. 4. 17:17
최적해를 구해야 되는 문제, 완전 탐색을 해야 되는 문제는 개인적으로 어려워하는 유형이라 이미 풀어봤던 문제일지라도 다시 풀어보면서 복습해야 될 것 같다. 틈틈이 업데이트하자! 앞으로는 github에 업데이트하기: https://github.com/jaemin-jeong/algorithm-programmers jaemin-jeong/algorithm-programmers Programmers algorithm training : https://programmers.co.kr/ - jaemin-jeong/algorithm-programmers github.com 완전 탐색, DFS, BFS 1. 타겟 넘버 https://programmers.co.kr/learn/courses/30/lessons/43165..
-
동적 계획법 알고리즘 (Dynamic programming Algorithm)알고리즘, 자료구조/정리 2020. 7. 30. 12:00
동적 계획법 알고리즘이란 동적 계획법이란 하나의 복잡한 문제를 여러 개의 간단한 하위 문제로 나누어 푼 다음, 이를 결합하여 답을 도출해내는 방법이다. 나누어진 하위 문제들의 결과를 따로 저장해두었다가 이후 동일한 문제가 나왔을 시 저장해둔 결과를 가져다가 쓰면 같은 문제를 반복해서 풀지 않아도 되기 때문에 문제를 해결하는데 시간을 절약할 수 있다. 즉 한번 푼 하위 문제는 중복해서 풀지 않는다. 그렇다면 어떤 문제인 경우에 동적 계획법으로 해결할 수 있을까? 우선 문제를 나누어봤을 때 반복되는 작은 문제들이 나와야 되고, 전체 문제의 최적해가 부분 문제의 최적해들로 구성되는지 확인해야 된다. 이 두 가지 조건 모두 충족한다면 동적 계획법으로 풀 수 있는 문제일 것이다. 지금까지 썼던 내용을 간단히 요약..
-
[WEB] 쿠키(Cookie), 세션(Session), 토큰(Token)에 대해 정리해보자CS/네트워크 2020. 7. 29. 11:12
1. 특징 및 장단점 들어가기 전 쿠키, 세션 같은 개념이 왜 나왔는지부터 알아보자. 간단히 말하면 HTTP의 Stateless(무상태성)과 Connectionless(무연결성) 특징 때문에 쿠키와 세션을 사용하는 것이다. Connectionless(무연결성): 서버와 클라이언트 간의 통신은 연결 수립 - 요청 - 응답 - 연결 제거 순으로 진행된다. 즉 응답이 완료되면 클라이언트와 서버의 연결은 끊어진다. Stateless(무상태성): 클라이언트가 요청A를 보내고 곧바로 요청B를 보낸다고 해도 서버는 클라이언트가 이전에 요청을 보냈던 클라이언트인지 구분하지 못한다. 간단히 말하면 http 요청은 독립적이며 서버는 클라이언트의 상태를 기억하지 못한다. 이러한 특징으로부터 갖게 되는 장점은 불특정 다수를 ..
-
[WEB] CORS에 대해 정리해보자CS/네트워크 2020. 7. 28. 14:33
혹시 내용 중에 틀린 부분을 발견하셨다면 댓글 부탁드립니다! 처음 CORS라는 것을 알게 된 것은 Ajax 개념을 블로그에 정리할 때였다. 이 때는 그냥 '아 이런 게 있구나' 정도로 넘어갔었다. 그 후 부트캠프 과정에서 CORS 에러를 통해 다시 CORS를 만났다. 즉 웹 개발을 공부하는 사람이라면 언제 어디선가 꼭 한 번쯤은 부딪히게 되는 키워드이다. 그렇다면 이 CORS라는 게 과연 뭘까? 본 포스팅 작성하며 CORS의 기본적인 내용을 다시 공부해보려 한다. 누군가 CORS가 뭐냐고 물어봤을 때 내가 아는 지식을 상대에게 쉽게 전달할 수 있길 바라며...! 1. CORS(Cross-Origin-Resourse-Sharing)란 무엇인가 그대로 해석하면 '교차 출처 리소스 공유'이다. 각 단어들이 다..
-
너비 우선 탐색 알고리즘 (BFS Algorithm)알고리즘, 자료구조/정리 2020. 7. 18. 15:45
DFS(Depth-First Search) 알고리즘에 이어 BFS(Breadth-First Search)를 정리해본다 BFS(Breadth-First Search) 탐색 알고리즘 중 하나인 BFS는 트리의 root 노드(그래프일 경우 임의의 노드)부터 시작해 모든 이웃 노드를 탐색한 뒤 아래 depth로 내려가 탐색을 반복하는 방식이다. 즉 시작 노드에서 가장 가까운 노드들을 모두 탐색하고, 그다음으로 가까운 노드들을 모두 탐색하는 것. DFS 알고리즘과 달리 BFS 알고리즘은 재귀 함수로 구현할 수 없다. 현재 노드에서 가까운 노드들을 모두 탐색한 뒤 그다음으로 가까운 노드들을 탐색하기 위해선 queue(FIFO: First In First Out)을 이용해야 하고, 어떤 노드를 방문했는지에 대해 검사..