분류 전체보기 102

WIL_세 번째 주

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

TIL_자료구조 stack

자료구조 중 stack을 배웠다. stack은 프링글스 과자를 생각하면 된다. 쌓여져 있는 과자의 형태. 이것이 stack이다. stack을 구현하는 코드를 작성했다. class Node: def __init__(self, item, next): self.item = item self.next = next class Stack: def __init__(self): self.top = None def is_empty(self): return self.top is None def push(self, val): self.top = Node(val, self.top) def pop(self): if not self.top: return None node = self.top self.top = self.top.n..

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): 최약의 경우 배열의 길이만큼 순회를 해야 함..

TIL_Assignment 3(class를 이용한 회원/게시글 관리)

세 번째 과제인 회원/게시글 관리 프로그램을 만들었다. Member과 Post 두 개의 class를 만들었고, terminal에서 직접 회원 생성을 할 수 있다. 회원을 다 생성하면 각각의 회원은 comment를 남길 수 있다. class를 만드는 것은 수월하게 작성했다. constructor을 만들고 그 안에 attributes를 넣었다. 'def display()'처럼 method를 작성하고 원하는 작업을 작성했다. hashlib module을 import하여 member의 password을 암호화 시켰다. 이 부분은 제대로 했는지 잘 모르겠다. 특히, 생성된 Member instance가 세 개의 Post instance를 갖게 하는 부분에서 좀 헤맸다. 그래도 어찌저찌 코드를 작성하고 테스트를 마..

TIL_두 번째 assignment(가위바위보 Game)

Python을 사용하여 '가위바위보' 게임을 만들었다. 여기서 사용한 기능은 다음과 같다. random, while-break, try-except, 다중 if, dictionary, .upper(), input() import random result = {'win': 0, 'lose': 0, 'tie': 0} while True: try: input_choice = input('(가위/바위/보) 중 하나를 선택하세요: ') if input_choice != '가위' and input_choice != '바위' and input_choice != '보': raise ValueError option_list = ['가위', '바위', '보'] random_choice = random.choice(opti..

TIL_Python Assignment 1(Up-and-Down Game)

저번 주에 python 문법 강의를 마치고 오늘 처음으로 개인과제를 했다. 제목은 up-and-down game. python을 이용한 게임을 만드는 것이다. 컴퓨터가 생각한 숫자를 맞추는 게임이다. 컴퓨터가 생각한 숫자와 비교하여 Up 또는 Down 힌트를 받으며 숫자를 맞추는 룰이다. 이 게임을 위해 내가 사용한 python 기능은 다음과 같다. while, try-except, if-elif, random, input() 등. import random random_num = random.randint(1, 100) count = 0 highest_count = 0 while True: try: input_num = int(input("Please enter a number(1-100): ")) co..

WIL_두 번째 주

이번주는 Python grammer에 대한 공부를 주로 했다. Facts Python grammer 기본과 심화 과정 강의를 모두 들었다. variable의 형태와 협업을 위한 convension, class의 구조 등 python을 이해하기 위한 기본 지식을 다지는 시간이었다. 중간중간 웹 기초 강의를 들으며 POST와 GET을 사용하는 방법에 대해 익숙해 지려고 하였다. Feelings 기초를 다지는 시간을 가지니깐 확실히 나의 내공이 더욱 강해지는 느낌이다. 코드를 작성하고, 라이브러리 등 다른 사람이 적은 코드를 읽을 때 확실히 자신감이 붙은 느낌이다. 이번 주에는 대체로 혼자 학습하는 시간을 가졌지만 가끔은 이렇게 조용히 생각하고 혼자서 궁금한 점들을 찾아보고 하는 것도 self-motivate..

TIL_Python 문법 심화

Python 문법 심화 강의를 모두 수강했다. 많은 내용이 있었지만 생소하거나 헷갈리는 것들 위주로 정리해 보았다. naming convension Class - Pascal 표기법(ex. PythonIsVeryGood) variable, 함수 - Snake 표기법(ex. python_is_very_food) all() / any() 함수 # all() : 요소들이 모두 True일 때, return true if all([True, True, True, False, True]): print("pass!") # False가 존재하기 때문에 통과X # any() : 요소들 중 하나라도 True일 때, return true if any([False, False, False, True, False]): prin..

TIL_Python 문법 심화와 환경 세팅

이틀동안 Python grammer 기본은 마치고 오늘부터 심화 강의를 듣기 시작했다. Python은 직관적이어서 읽기 쉽다는 장점이 있지만 띄어쓰가 중요한 언어이다. 또한 협업을 위해서는 필수는 아니지만 convention을 따르는 것이 추천된다. 따라서 오늘은 python에서의 기본 규칙인 convention에 대해 배웠다. 직접 타이핑을 해 주어도 되지만, vscode에서 extension을 다운로드하여 사용하면 save 할 때 자동으로 indentation을 맞추어 주어 매우 편리하다. Python 프로그래밍을 위해 다운로드 한 extension 으로는 다음과 같다. Python / 파이썬 debug, 자동완성, 코드 서식 지정, 코드 탐색 등 Python 개발 환경에서 다양한 기능을 지원 Mat..

LIST