본문 바로가기
반응형

Algorithm29

스택이란? Preface 이번 장에선 데이터를 담는 방법 중 하나인 스택에 대해 공부했다. 스택과 큐는 운영체제를 공부하며 한 번 훑었던 기억이 있어 막히는 부분 없이 쉽게 이해할 수 있었다. 또, deque(라이브러리)를 사용하여 코드를 제대로 작성해 본 것은 이번이 처음인데, 길고 복잡한 코드를 짧고 직관적으로 표현할 수 있다는 점이 신기했다. 최근 걱정되는 점은 시간 분배에 관한 부분인데, 중간고사 이후 대면 수업이 예정되어 있어 평일에 개발 공부를 어떻게 해야 할 지 고민이다. 추가로 다음 주는 시험으로 인해 글을 자주 올리지 못할 것 같다. - 스택(stack) : 데이터를 임시 저장할 때 사용하는 자료구조 → LIFO(Last In First Out) : 후입선출 방식 1) 푸시(push) : 스택에 데.. 2021. 10. 14.
해시법 Preface 이번 장은 공부하는 데 생각보다 오랜 시간이 걸렸다. 개인적인 사정이 생겨 시간이 없었던 탓도 있지만, 내용 자체가 어렵고 길어 코드를 한 줄 한 줄 읽어가며 이해하는 것이 어려웠다. 무엇보다 이전엔 사용하지 않던 어노테이션을 사용하려 하니 손에 익지 않아서인지 꽤나 불편했다. 또, 다양한 클래스와 함수, 변수를 한 프로그램 내에서 모두 사용하자 정신이 없었다. 앞으로는 이보다 훨씬 길고 복잡한 코드를 자주 접하게 될텐데, 벌써부터 코드를 이해하는 데 어려움을 겪으니 걱정이 앞선다. 이번에 공부한 코드를 자주 읽어보며 구현력과 가독성을 높이자. - 해시법 : '데이터를 저장할 위치 = 인덱스'를 간단한 연산으로 구하는 것 - 해시값 : 원소의 값 % 원소의 개수 - 해시 테이블 : 해시값을.. 2021. 10. 12.
이진 검색 Preface 지난 포스팅에 이어 배열 검색 알고리즘 중 하나인 이진 검색을 공부했다. 원래 해시법까지 모두 공부한 후 한번에 글을 작성할 계획이었지만, 이번 장을 공부하는 데 생각보다 긴 시간이 걸려 이렇게 따로 업로드한다. 이진 검색 코드를 작성하던 도중 한 가지 의문점이 생겨 이를 해결하고자 새로운 코드를 직접 작성해봤으며, 자세한 내용은 본문에 적어놓았다. 1. 이진 검색 - 이진 검색 : 원소가 오름차순이나 내림차순으로 정렬된 배열에서 좀 더 효율적으로 검색할 수 있는 알고리즘 - 이진 검색의 종료 조건 1) a[pc]와 key가 일치하는 경우 2) 검색 범위가 더 이상 없는 경우 - 이진 검색 알고리즘 코드 from typing import Any, Sequence def bin_search(.. 2021. 10. 7.
검색 알고리즘과 선형 검색 Preface 이번 장에선 배열 내에서 특정 데이터 값을 찾는 검색 알고리즘에 대해 공부했다. 선형 검색을 수행하는 코드를 작성해 본 후 보초법에 대한 설명을 읽어봤을 땐 어디서 반복을 줄여준다는 것인지 이해가 가지 않았다. 그러나 두 코드를 주의깊게 비교해보니 while 문 내에서 if 문의 개수가 다르다는 것을 알 수 있었다. 알고리즘을 정확히 공부하고 코딩 실력을 향상시키기 위해선 코드 내에서의 미세한 차이가 결과적으론 큰 차이를 이끌어낼 수 있다는 것을 항상 명심하자. 1. 검색 알고리즘이란? - 키(key) : 검색 조건에서 주목하는 항목 → 대부분 키는 데이터의 일부이다. - 검색의 종류 1) 배열 검색 2) 연결 리스트 검색 3) 이진 검색 트리 검색 - 배열 검색 알고리즘 1) 선형 검색 .. 2021. 10. 4.
배열이란? Preface 이번 장에선 지난 포스팅에 이어 배열을 공부했다. 내용 면에선 크게 어려운 부분이 없었지만, 이를 알고리즘을 통해 실제 코드로 구현하는 실습 과정이 생각보다 복잡했다. 코드를 한 줄 한 줄 읽어보면 분명 이해는 할 수 있지만, 막상 풀이 과정을 보지 않고 혼자 해결하려 하면 어떻게 구현해야 할 것인지 감이 오지 않았다. 다시 말해 개별적인 함수의 사용법은 어느정도 숙지했지만, 이 함수들을 사용하여 문제를 해결할 방법이 잘 떠오르지 않는다. 당분간은 특정 문제가 주어졌을 때 이를 해결하기 위해 어떤 접근 방법을 취해야 할 것인지에 초점을 맞춰 차근차근 코드를 작성하는 연습을 할 계획이다. 소프트웨어 공학에서 공부했던 것처럼 추상화 단계를 점차 낮추며 코드를 작성하자! 1. 배열이란? - 스캔.. 2021. 10. 2.
자료구조와 배열 Preface 이번 장에선 파이썬의 배열 중 하나인 리스트와 튜플에 대해 공부했다. 두 가지 모두 '점프 투 파이썬'을 통해 자주 접하고 사용하여 익숙해진 탓인지 마음 편히 진도를 나갈 수 있었다. 다만 헷갈리는 함수들이 몇몇 있어 다음 장을 시작하기 전 리스트 함수 부분을 복습할 계획이다. 1. 자료구조와 배열 - 원소 : 배열에 저장된 객체 - 파이썬에서의 배열 1) 리스트 : 뮤터블(mutable : 값을 변경할 수 있음) 2) 튜플 : 이뮤터블(immutable : 값을 변경할 수 없음) → 리스트에선 마지막 원소에 쉼표를 써도 되고 쓰지 않아도 되지만, 튜플에서 원소가 1개인 경우엔 원소 뒤에 쉼표를 반드시 입력해야 한다. - 언팩(unpack) : 리스트나 튜플의 원솟값들을 풀어 여러 변수에 .. 2021. 10. 1.
반복하는 알고리즘 Preface 이번 장은 내용이 많아 이틀에 걸쳐 조금씩 공부했다. 코드를 한 줄 한 줄 분석하며 이해하다 보니 시간은 조금 오래 걸렸지만, 그동안 파이썬으로 별 생각 없이 작성하던 코드들이 어떤 방식으로 작동하는 것인지 생각해 볼 수 있었다. 또, 단일 대입문과 비교 연산자의 연속적인 사용 방법, 가우스의 덧셈, 드모르간의 법칙 등 새로운 내용들도 배울 수 있었으며, 다양한 방식(내가 그동안 생각치 못했던 방식)으로 작성된 코드를 접하자 알고리즘을 통해 코드를 작성하는 방법은 정말 무궁무진하다는 것을 다시 한 번 느낄 수 있었다. 물론 중간 중간 내가 생각하는 방식대로 코드를 작성해 보기도 했다. 마지막으로 이번 장을 공부하며 코드를 작성할 땐 계산(반복)을 최대한 줄여 복잡성을 감소시키는 것이 중요한.. 2021. 9. 29.
알고리즘이란? Preface 오늘은 알고리즘의 첫 부분을 공부했다. 아직 초반 부분이라 그런지 딱히 어려운 부분은 없었고 대부분 이전에 공부했던 내용들이었다. 앞으로 책을 볼 때마다 코드 이해도와 코딩 속도 향상을 위해 책에 실린 다양한 실습 코드를 한 줄 한 줄 분석하며 직접 코드를 작성해 볼 생각이다. 1. 알고리즘이란? - 순차 구조 : 한 문장씩 순서대로 처리되는 구조 - 조건식 : if와 콜론(:) 사이에 있는 식 - 선택 구조 : 조건식으로 평가한 결과에 따라 프로그램의 실행 흐름이 변경되는 구조 - 형 변환 : 문자열형을 정수형으로 변환하는 과정 - 복합문의 구조 1) 헤더 : 키워드로 시작하여 콜론으로 끝나는 복합문의 첫 부분 2) 콜론 : 바로 뒤에 스위트가 이어짐을 의미 → 스위트 : 헤더와 한 세트.. 2021. 9. 28.
자료구조와 함께 배우는 알고리즘 출처 자료구조와 함께 배우는 알고리즘 카테고리에 있는 모든 글들은 시바타 보요 교수님의 『자료구조와 함께 배우는 알고리즘 입문』(이지스퍼블리싱)에서 정리·요약 및 간접인용한 내용임을 밝힙니다. 2021. 9. 27.