전체 글
-
해시_전화번호 목록_python프로그래머스 문제풀이 2021. 4. 19. 18:01
문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 문제 접근 방법 ..
-
SQL 상관 서브쿼리Database 2021. 4. 19. 13:27
상관 서브 쿼리 부모 명령과 자식인 서브 쿼리가 특정 관계를 맺는 것을 상관 서브 쿼리라고 한다. 상관 서브 쿼리의 경우 부모 명령과 관계를 맺고 있기 때문에 상관 서브 쿼리는 단독 쿼리 즉, 혼자서는 실행을 할 수 없다. 설명만 보면 이해가 가지 않으므로 아래 예시와 함께 이해해보도록 하자! 앞서 DELETE 명령에 대한 서브 쿼리이다. # 상관 서브쿼리 X DELETE FROM ttt_set WHERE A = (SELECT MIN(A) FROM ttt_set); SELECT MIN(A) FROM ttt_set # 상관 서브쿼리 O UPDATE 테이블명1 SET A(열1) = "TEST" WHERE EXISTS (SELECT * FROM 테이블명2 WHERE 열2 =열1); SELECT * FROM 테..
-
힙_1Algorithm & Data Structure 2021. 4. 18. 14:53
힙 완전 이진 트리를 기 이진 트리를 기본으로 하는 자료구조로 트리의 일종이며 아래 두개의 조건을 만족하는 트리이다. 최댓값 , 최솟값을 쉽게 추출 할 수 있는 자료구조이다. 이러한 힙은 힙_2에서 설명할 우선순위 큐를 위하여 만들어진 자료구조라 한다. 1. 형태 속성 : 힙은 완전 이진 트리여야 한다. 2. 힙 속성 : 모든 노드의 데이터는 자식 노드들의 데이터보다 크거나 작아야 한다. - Heap은 부모 노드가 항상 자식 노드보다 크거나 같아야 하는 경우(max heap)와 부모 노드가 항상 자식 노드보다 작거나 같아야 하는 경우(min heap)로 나눌 수 있다. 최댓값을 추출하고자 할때는 부모 노드가 자식 노드보다 항상 큰 max heap으로 최솟값을 추출하고자 할때는 부모 노드가 자식 노드보다 ..
-
트리Algorithm & Data Structure 2021. 4. 17. 16:13
데이터의 계층 관계를 저장하는 자료구조이다. 여기서 계층은 상 - 하 관계에 해당 하는 데이터이다. 트리는 앞선 배열, 링크드리스트와 같은 선형 자료구조가 아닌 비선형 자료구조이다. (트리를 순회하는 과정에서 선형 자료구조와 같이 데이터를 출력할 수 도 있다.) 링크드리스트와 같이 노드 라는 객체 단위의 데이터를 사용하여 관계를 저장한다. 트리에서의 노드는 하위 관계가 있는 노드들을 가르키는 레퍼런스를 갖는다. class Node: """트리 노드를 나타내는 클래스""" def __init__(self, data): """트리 노드는 데이터와 두 자식 노드에 대한 레퍼런스를 갖는다""" self.data = data self.left_child = None self.right_child = None 트리..
-
SQL 서브쿼리_2Database 2021. 4. 14. 16:00
SELECT 구 + 서브쿼리 서브쿼리는 WHERE 구, SELECT 구, UDDATE의 SET구 등 다양한 구 안에서 사용이 가능하다. 문법적으로 서브쿼리는 하나의 항목으로 취급한다. 단, 문법적으로는 문제가 없어도 실행하면 에러가 발생하는 경우가 종종있는데 이는 서브쿼리가 스칼라 서브쿼리 (하나의 값만 반환하는지)에 대해 생각해볼 필요가 있으며 서브쿼리를 사용할 때는 스칼라 서브쿼리로 되어있어야한다. 즉, SELECT 구 + 서브쿼리를 지정할때 스칼라 서브쿼리가 필요하다. 각 테이블의 행의 개수를 나타내보자. SELECT (SELECT COUNT(*) FROM 테이블명) AS 별명, (SELECT COUNT(*) FROM 테이블명2) AS 별명2; 여기서 주의할점 FROM이 생략되었다는 것이다. MyS..
-
추상 자료형_2(Python)Algorithm & Data Structure 2021. 4. 14. 14:33
딕셔너리 자바에서의 맵 자료형과 비슷하다고 한다.(맵을 딕셔너리로 이해해도 좋다. 뜯어보면 다른 녀석이지만 말이다.) 이전 추상 자료형들과 달리 데이터의 순서 관계를 약속하지 않는다. Key-value 쌍 데이터를 탐색 / 삽입/ 삭제할 수 있도록 도와주는 자료형이다. 리스트와 마찬가지로 자료형 이름인 딕셔너리(Dictonary)를 그대로 가져와 사용한다. 딕셔너리에서는 탐색/ 삽입 / 삭제 연산은 O(1)의 시간 복잡도를 갖는다. 왜냐하면? 딕셔너리는 해시 테이블 자료구조로 구현되어 있기 때문이다. 해시 테이블에서와 마찬가지로 하나의 key는 하나의 value만 가지고 있어야 한다. 앞서 말했던 바와같이 딕셔너리는 해시 테이블로 구현되어 있기에 충돌이 일어나는 상황에서는 Open Addressing 방..
-
스택/큐_다리를 지나는 트럭_python프로그래머스 문제풀이 2021. 4. 13. 20:55
문제 설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6] kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리 길이 bridge_length, 다리가 견딜 수 있는 무게 weight, 트..
-
추상 자료형_1(Python)Algorithm & Data Structure 2021. 4. 13. 16:48
리스트 데이터 간 순서 관계를 유지할 수 있다. 파이썬 리스트는 동적 배열 자료구조로 구현되어있다. 접근/ 탐색/ 삽입/ 삭제의 기능을 가지고 있다. 큐 데이터간 순서 관계를 유지할 수 있다. 맨 뒤 데이터 추가 맨 앞 데이터 삭제 맨 앞 데이터 접근의 기능 등을 가지고 있다. FIFO First-in-first-out 가장 먼저 들어온 데이터가 가장 먼저 삭제됨을 말한다. (선입선출) 큐는 동적배열과 더블리 링크드 리스트로 구현이 가능하며 파이썬에서는 (deque) 자료형은 더블리 링크드 리스트로 구현되어 있다. 일반적으로 queue는 한쪽으로 들어가고 한쪽으로만 나가는데, deque는 양쪽으로 들어가고 양쪽으로 나갈 수 있다. (스택을 deque로 사용하기도 한다) 파이썬에서는 deque 자료형을 사..