Algorithm 4

WIL_네 번째 주

이번주는 Algorithm과 Django에 대한 공부를 했다. Facts 매일 아침마다 1시간 씩 algorithm 문제를 3문제 정도씩 풀었다. 또한 Django 기초 강의를 두 가지나 받았는데, 두 강의 모두 Django의 기본 동작 프로세스와 CRUD를 어떻게 할 수 있는 지 배웠다. 그리고 협업을 위한 Git 사용 방법을 연습했다. Feelings Algorithm 문제를 꾸준히 풀다 보니깐 for과 data type 부분에 대해 조금은 익숙해진 느낌이다. 또한 이번에 Django를 처음 사용하게 되었는데, 많은 기본 기능들이 이미 구현이 되어있어서 그런지 편리한 framework라는 생각이 들었다. MVT model을 사용하기 때문에 기능과 역할에 따라 파일들이 구분되어 있는데, 이 부분에 익숙..

WIL_세 번째 주

세 번째 주 주말이다. Facts 이번주에는 3가지 개인 과제를 진행하고 algorithm을 배우기 시작했다. 개인 과제는 '1. up and down game, 2. 가위바위보 게임, 3. class를 이용한 멤버관리 시스템'을 만드는 것이었다. 첫 번째와 두 번째 프로그램은 비교적 금방 작성을 했는데, 세 번째 멤버관리 시스템은 시간이 좀 걸렸다. 한 class로 instance를 생성하고, 생성된 instance에 세 개의 instance를 만드는 것이 복잡하게 느껴졌다. 그래도 username attribute으로 두 개의 class를 서로 이어주고 각각의 instance에 여러 개의 instance를 생성할 수 있도록 해서 프로그램을 무사히 작성했다. 목요일 부터는 아침마다 알고리즘 실시간 강의..

TIL_Array와 LinkedList(Algorithm)

Array와 Linked List에 대해 정리해 보았다. Array 접근 쉬움, 삽입 어려움, Python의 list. 특정 원소 조회: O(1) 중간에 삽입, 삭제: O(N) 공간이 다 차면 새로운 메모리 공간을 할당받아야 함 LinkedList 접근 어려움, 삽입 쉬움, 직접 구현. 특정 원소 조회: O(N) 중간에 삽입, 삭제: O(1) 공간이 다 찼어도 맨 뒤의 node만 동적을 추가하면 됨 결론 데이터에 접근하는 경우가 빈번할 때는 Array, 삽입과 삭제가 빈번하다면 LinkedList 사용. LinkedList의 구현 code class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class L..

TIL_Algorithm

오전에 첫 번째 Algorithm 특강을 들었다. 알고리즘이란, 컴퓨터가 따라 할 수 있도록 문제를 해결하는 절차나 방법이다(구글 검색 결과). Computational thinking이 프로그래밍이나 알고리즘 문제를 풀 때 뿐만이 아니라 다른 분야 혹은 일상 생활 속에서 컴퓨팅 사고를 하는 것은 많은 도움이 된다. 좋은 알고리즘의 기준으로 공간 복잡도와 시간 복잡도가 있다. 공간 복잡도 프로그램을 실행 및 완료하는데 필요한 저장 공간의 양, 컴퓨터 저장공간의 기술 발달로 그렇게 중요하지는 않음. 시간 복잡도 특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간. - 빅오메가(Big-Ω): 최선의 경우 - 빅세타(Big-Θ): 평균(중간) - 빅오(Big-O): 최약의 경우 배열의 길이만큼 순회를 해야 함..

LIST