목록CS/자료구조 | 알고리즘 (8)
꾸준히 안타치기
https://dojang.io/mod/page/view.php?id=2285 파이썬 코딩 도장: 22.5 리스트 표현식 사용하기 파이썬의 리스트가 특이한 점은 리스트 안에 for 반복문과 if 조건문을 사용할 수 있다는 점입니다. 이렇게 리스트 안에 식, for 반복문, if 조건문 등을 지정하여 리스트를 생성하는 것을 리스트 dojang.io
맵 Map ( 파이썬은 기본자료형 딕셔너리를 사용) Key - Value 쌍 구조 Key: 중복 불가 Value: 중복 가능 Key를 알면 Value도 알 수 있으나 역은 불가 맵은 집합의 상위호환이다. 맵을 집합처럼 사용할수 있다. ex. 학생들의 시험점수 저장할 때 사용할 수 있는 자료구조 파이썬은 기본 자료형 딕셔너리 사용 데이터를 넣은 순서대로 이루어지지 않는다. 맵에 들어간 원소는 순서가 보장되지 않는다. 내부적으로 Hash Table 이라는 자료구조를 써서 구현됨 $O(1)$ 이라도 데이터가 너무 많으면 느릴 수 있다. 명령 https://wikidocs.net/16 02-5 딕셔너리 자료형 [TOC] ## 딕셔너리란? 사람은 누구든지 이름 = 홍길동, 생일 = 몇 월 며칠 등으로 구별할 수 ..
Stack 스택(stack)이란 어떠한 자료를 쌓아서 올려놓은 형태의 자료구조입니다. 가장 최신의 데이터부터 꺼낼수 있음. 후입선출 자료의 삽입과 삭제는 한곳에서만(top) 이루어지게 됨 선입후출 First-In-Last-Out( 마지막데이터가 제일 첫번째로 나감) 후입선출 Last-In-First-Out Python에서는 리스트로 구현한다. 파이썬의 리스트는 스택의 연산을 포함하고 있다. 상단값은 top 혹은 head라고 부름 top이 아닌 안쪽 데이터는 꺼낼 수 없음 push(v) = 맨 위에 v 값을 넣기 : $O(1)$ pop() : 맨 위에 있는 값을 뽑기 : $O(1)$ top() : 맨 위에 있는 값을 조회 : $O(1)$ 스택이 비어있을 때 자료를 꺼내려고 시도를 하면 스택 언더플로우(St..
Array 배열은 보편적으로 동일한 형태의 여러 데이터를 저장하기 위해 사용한다. 한번 고정적으로 선언된 배열은 크기를 변경하기가 어렵다. 정해진 크기의 데이터를 저장할때 사용하면 좋다. 장점 : 인덱스를 알고 있다면 해당자료를 찾기 쉽다. 단점: 데이터가 삭제되면 해당 인덱스를 비워두어야한다는 단점이 있다. 과일 = ['사과', '수박','바나나','멜론' ,'파인애플' , '포도'] 과일[0] //'사과' ArrayList (배열) 메모리상에 연속된 공간으로 할당됨 파이썬에서는 리스트를 사용한다. 리스트는 사이즈 변경이 자유롭고, 타입이 다른요소를 넣을 수 있다. 파이썬만 그렇다. K번째 원소를 확인/변경이 가능하다. 순서가 있고, 중복을 허용한다. 크기가 가변적이다. 데이터의 삽입과 삭제에 대한 데..
OOP란? Object Oriented Programming Concepts(OOP) 클래스- 객체를 생성하기위한 템플릿 객체 - 클래스의 인스턴스( 메모리에 등재 ) Encapsulation(캡슐화) - 클래스에 보안제공 , 다른개발자들이 클래스안의 멤버와 펑션을 변경할수 없게한다. 접근권한이 없음 상속 - 코드의 재사용성을 위해사용/ 부모가 갖은것은 자식도 갖고있음 polumorphism - 오버로딩 / 같은 이름의 함수이지만 다르게 실행됨 Abstraction - 가상클래스 / 가상클래스를 부모로 갖고 있는 자식클래스는 가상함수를 그 안에서 구현해야한다. https://www.youtube.com/playlist?list=PLVNY1HnUlO25sSWDr7CzVvkOF3bUgkiQQ 코딩 인터뷰 정..
거품정렬 파이썬예제 import unittest def bubblesort(alist): for i in range(len(alist)-1): for j in range(len(alist)-1): if alist[j] > alist[j+1]: alist[j], alist[j+1] = alist[j+1], alist[j] return alist class unit_test(unittest.TestCase): def test(self): self.assertEqual([1, 2, 3, 4, 5, 6], bubblesort([4, 6, 1, 3, 5, 2])) self.assertEqual([1, 2, 3, 4, 5, 6], bubblesort([6, 4, 3, 1, 2, 5])) self.assertEqua..
자료구조란? - 메모리를 담는 여러가지 형태 / 데이터를 담는 그릇 자료를 담는 구조로, 자료구조는 각각의 목적에 맞추어져있다. 자료구조의 특징 1. 효율성 자료구조를 사용하는 목적은 데이터를 목적에 맞게 효율적으로 관리 및 사용하는 것입니다. 적절한 자료구조를 선택하여 사용한다면 코드의 효율이 올라갈 것입니다. 2. 추상화 추상화란 구체적인 대상에서 공통적인 측면이나 중요한 성질을 뽑아내여 표현하는 과정이다. 서비스 집중화( 코드를 캡슐화 해서 공통으로 사용하는 것 ) 3. 재사용성 다양한 프로그램에서 동작할 수 있도록 범용성 있게 설계되었습니다. 자료구조의 분류 선형 자료구조는 데이터가 일렬로 나열되어있는 것 비선형 자료구조는 그외의 형태 Array List ( ArrayList / LinkedLis..
https://velog.io/@cyranocoding/Hash-Hashing-Hash-Table%ED%95%B4%EC%8B%9C-%ED%95%B4%EC%8B%B1-%ED%95%B4%EC%8B%9C%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EC%9D%98-%EC%9D%B4%ED%95%B4-6ijyonph6o Hash, Hashing, Hash Table(해시, 해싱 해시테이블) 자료구조의 이해 0_HJVxQPQ-eW0Exx7M.jpeg DATA들이 사용하기 쉽게 정리되어 있다. 자료구조는 도대체 무엇일까? 자료구조(Data-Structure)는 데이터들의 모임, 관계, 함수, 명령 등의 집합을 의미한다. 더 쉽게 표현하자면, 1) ..