본문 바로가기

Programming

(99)
Web 기본 지식 웹이란 무엇인가? 웹 해킹을 포함한 다양한 분야에서의 해킹은 본래의 의도와는 다른 행위를 발생시키는 것을 의미한다. 이러한 의도치 않은 행위를 발생시키기 위해서는 설계 또는 운영의 약점을 찾을 수 있어야 한다. 물론 이를 위해서는 해당 시스템에 대한 설게자 또는 운영자보다 더 높은 이해도를 가지고 있어야 한다. 인터넷상의 서비스 중 HTTP를 이용하여 정보를 공유하는 통신 서비스를 웹, 서비스를 제공하는 대상을 웹 서버, 서비스를 받는 사용자를 웹 클라이언트 라고 부른다. 초기 웹은 저장된 문서의 내용을 출력해 사용자에게 제공하는 간단한 서비스였다. 이것이 시간이 지남에 따라 발전하고 적응하며 사용자의 입력과 입력에 따른 기능 수행이 추가되고 업무, 금융, 쇼핑 등 다양한 분야에서 사용할 수 있도록 발전..
bisect Python bisect 알고리즘 문제를 풀다 보면 이진 탐색을 써야할 경우가 존재한다. 이러한 문제를 풀 때 마다 이진 탐색 알고리즘을 작성하는 것은 다소 효율적이지 못하다. 이번에는 Python의 이진 탐색 모듈, bisect에 대해 알아보도록 한다. 일반적 이진탐색 다른 언어 또는 파이썬을 이용하여도 이 기능을 모르는 경우에는 이진탐색 함수를 직접 작성한다. def bisect(a, x, lo=0, hi=None): if lo < 0: raise ValueError(&#39;lo must be non-negative&#39;) if hi is None: hi = len(a) while lo < hi: mid = (lo + hi) // 2 if a[mid] < x: lo = mid + 1 else: ..
DFS Concept & Implementation DFS (Depth Frist Search) 1. 개념 파이썬 DFS 구현 스택을 사용하여 구현 아래와 같은 그래프 예시를 통한 DFS 시뮬레이션 출력 기존 입력 새로운 입력 ( 자손 ) A A B C D D B C H I I B C H K L L B C H K K B C H H B C C B G G B B E F F E J J E E 탐색 결과 : A -> D -> I -> L -> K -> H -> C -> G -> B -> F -> J -> E 2. 구현 graph = { &#39;A&#39; : set([&#39;B&#39;, &#39;C&#39;, &#39;D&#39;]), &#39;B&#39; : set([&#39;A&#39;, &#39;E&#39;, &#39;F&#39;]), &#39;C&#..
BFS Concept & Implementation BFS (Breath First Search) 1. 개념 파이썬 BFS 구현 큐를 사용하여 구현 아래와 같은 그래프 예시를 통한 BFS 시뮬레이션 출력 기존 입력 새로운 입력 ( 자손 ) A A B C D B C D E F C D E F G D E F G H I E F G H I F G H I J G H I J H I J I J K L J K L K L L 탐색 결과 : A -> B -> C -> D -> E -> F -> G -> H -> I -> J -> K -> L 2. 구현 graph = { &#39;A&#39; : set([&#39;B&#39;, &#39;C&#39;, &#39;D&#39;]), &#39;B&#39; : set([&#39;A&#39;, &#39;E&#39;, &#39;F&#39;..
BFS&DFS DFS & BFS 개념과 구현 탐색 알고리즘과 자료구조, 직관적으로 이해하기 DFS, BFS 등의 용어는 컴퓨터공학 계열 전공자 또는 개발 관련 공부를 진행해본 사람들이라면 한 번씩은 모두들 들어보았을 것이다. 들어보긴 들어봤으나, 그 개념과 구현은 생각보다 쉽지만은 않다. 이들을 탐색할 때 쓰이는 트리와 스택 또는 큐와 같은 자료구조까지 알아야 할 것들이 너무 많기도 할 뿐더러 이러한 알고리즘을 처음 접할때는 왜 stack queue등이 필요한지 잘 와닿지 않는다. 이것부터 알아보도록 하자! 자료구조가 왜 필요해? 한 예시를 들어보자. 어떠한 게임을 진행하면서 가능한 모든 경우의 수들을 생각해보고, 그 이후의 경우의 수도 모두 확인해보고자 할 때 우리는 기억에 용이함을 위하여 메모지에 메모 또는 머리속..
lambda #Lambda Lambda는 함수를 간단하게 사용할 수 있도록 도와준다. 이는 이름이 없는 함수, 익명함수라고 하기도 한다. 이는 함수형 프로그래밍 언어에서의 lambda 와 정확히 똑같은 것은 아니지만, 파이썬 내에서 잘 통합되어 있으며 filter(), map(), reduce() 와 같은å 전형적인 기능 개념과 함께 사용되는 강력한 함수이다. lambda는 쓰고 버리는 일시적인 함수이다. 즉, 함수가 생성된 곳에서만 사용이 가능하다. lambda 인자리스트 : 표현식 g = lambda x: x**2 print(g(8)) #64 f = lambda x,y : x+y print(f(4,4)) #8 람다의 정의에는 return 문이 포함되어 있지 않다. 반환값을 만드는 표현식이 포함되어 있다. 함수가 ..
map_join_product zip() 파이썬 내장함수 zip()은 같은 길이의 iterable한 자료형를 같은 인덱스끼리 잘라서 반환해준다. for문을 이용해 다수의 리스트로 부터 값을 가져와서 처리해야 하는 경우 매우 유용히 사용된다. 모든 멤버의 type 변환하기 문제 설명 문자열 리스트를 입력받아, 해당 리스트를 정수형 리스트로 바꾼 값을 리턴하는 함수, solution을 만들어라. 예를들면, mylist가 [&#39;1&#39;, &#39;100&#39;, &#39;33&#39;]인 경우, solution 함수는 [1, 100, 3]을 리턴하면 된다. 제한조건 1) mylist의 길이는 100이하 자연수이다. 2) mylist의 원소는 10진수 숫자로 표현할 수 있는 문자열이다. 즉, &#39;as2&#39;와 같은 문자열..
sorted_zip 파이썬을 파이썬답게 원본을 유지한채, 정렬된 리스트 구하기 - sorted 파이썬의 sort()함수를 사용하면 리스트의 원소를 정렬할 수 있다. 이때, sort함수는 원본의 멤버 순서를 변경하지 않는다. 따라서 원본의 순서는 변경하지 않고, 정렬된 값을 구하려면 sort함수를 사용할 수 없다. 이러한 경우에는? 일반적인 경우, deep copy 또는 sort 함수를 이용한다. list1 = [3, 2, 1] list2 = [i for i in list1] # 또는 copy.deepcopy list2.sort()list1 = [3, 2, 1] list2 = sorted(list1)def solution(mylist): answer = list(map(list, zip(*mylist))) return ans..