분류 전체보기
1. 정렬되어 있지 않은 연결리스트에서 중복되는 원소를 제거하기 # 연결리스트를 순회하면서 딕셔너리에 Node의 data를 담아두고 # data 값의 key가 존재하면 노드를 삭제 def remove_duplication1(node): compare_table = {} previous = None while node: if node.data in compare_table: previous.next = node.next else: compare_table[node.data] = 1 previous = node node = node.next # 다른 자료구조를 사용할 수 없는 경우 연결리스트 내에서 두개의 포인터를 사용해서 # 중복되는 원소가 있는지 확인 def remove_duplication2(head)..
두가지 경우에서 중복되는 부분을 합쳐 한번에 계산하는 방식 수정 후(답안지) def one_edit_away(first, second): # 길이 체크 if abs(len(first) - len(second)) > 1: return False # 길이가 다른 문자열 구분 if len(first) > len(second): first, second = second, first index_first = 0 index_second = 0 found_difference = False while index_second < len(second) and index_first < len(first): if first[index_first] != second[index_second]: if found_difference..
1. Base Case로부터 확장하기 n = 1 일 때와 같은 base case에 대한 문제를 해결한 뒤에 거기서부터 한단계씩 문제를 확장해 나가는 방식이다. from copy import copy # 문자열의 모든 순열을 계산하는 알고리즘을 설계하라 # 모든 문자는 문자열 내에서 고유하게 등장한다고 가정 string = ['a', 'b', 'c', 'd'] def find_permutations(_list): # base case if len(_list) == 1: return [_list] last = _list.pop() base_elements = find_permutations(_list) combined_elements = [] for element in base_elements: for j ..
1. 병목현상 아래와 같은 서로 다른 정수로 이루어진 배열에서 두 수의 차이가 k 인 원소 쌍의 갯수를 구할 때 s = [1, 7, 5, 9, 2, 12, 3] k = 2 ret = [] 단순하게 배열의 모든 원소를 훑어가면서 원소 쌍의 차이를 확인할 수도 있지만 repeat_count = len(s) for i in range(repeat_count-1): for j in range(i+1, repeat_count): if abs(s[i] - s[j]) == 2: ret.append((s[i],s[j])) 이렇게 코드를 작성한다면 두번째 반복문을 돌면서 같은 원소를 여러번 찾게되어 O(NlogN) 의 시간이 걸리게 된다. 2. 병목현상 제거 dic = {s[i]:i for i in range(len(s..
1. 그리드 1) 그리드의 법칙 최소 한개의 row가 container 안에 배치되어야 합니다. 최소 한개의 column이 row 안에 배치되어야 합니다. row는 항상 container 안에 배치되어야 합니다. row 아래에는 column 단위만 포함할 수 있습니다. (contents 를 넣고자 하는 경우 column 안에 포함시켜야 합니다.) 개별 column 은 항상 row에 직접 연결된 자식 개체여야 합니다. 2) container 부트스트랩의 최상위 오브젝트입니다. 컨테이너 안에 다른 요소들이나 콘텐츠들을 포함할 수 있습니다. 3) column row 안에 직속으로 들어가는 자식요소 입니다. 뷰포트 상에 좌우로 나열되는 규격을 만들어줍니다. 각 column 사이에 생기는 간격을 gutter라고 ..
1. 브라우저의 Workflow 1. Dom Tree 생성 브라우저가 HTML을 전달받으면, 브라우저의 랜더 엔진이 이를 파싱하고 DOM 노드로 이루어진 트리를 생성합니다. 각 노드는 HTML 엘리먼트들과 연관되어 있습니다. 2. Render Tree 생성 외부 CSS 파일과 각 엘리먼트의 inline 스타일을 파싱하고, DOM Tree 의 내용을 올바른 순서로 칠할 수 있도록 랜더 트리를 생성합니다. 3. Layout (reflow) 각 노드들에 스크린 좌표가 주어지고 어디에 나타나야 할지 위치가 주어집니다. 4. Painting 랜더링 된 요소들에 색을 입히는 과정. 트리의 각 노드들을 순회하면서 paint() 메서드를 호출합니다. 위 과정은 점진적인 프로세스지만 더 나은 사용자 경험을 위해 랜더링 ..
웹 프로그래밍 스쿨 22주 차 포스팅입니다!😃 이번 주도 역시 엄청 바쁘게 지나갔는데요! 자료구조 시간에는 Graph의 개념과 순회 방식, MST에 대해 배우고, 트러블 슈팅 시간에는그 동안 묵혀두었던 일치율과 추천 알고리즘에 대해 상담하고, DB 중복 query 제거에 대해서 배우고, 나머지 시간에는 진행중인 프로젝트의 오류 나는 부분을 고쳐가며 지낸 결과! 서버가 어느정도 안정화가 되어 클라이언트 쪽 스쿨분들이 작업하신 코드와 합쳐서 포스트맨이 아닌 브라우저를 통해서 눈으로 FastFlix 화면을 볼 수 있게 되었습니다.(감격) 재생 가능!! 영상을 보면 메인화면 부터 로고, 영화 리스트 화면, hover 시에 화면 커지고 리스트가 밀리는 것 까지 정말 똑같이 구현이 돼서 너무 신기했고, 열심히 크롤..