본문 바로가기

Programming/Python19

12. 파이썬 기초(7) : 선형 자료구조 총 정리 배열 vs 연결리스트 vs 스택 vs 큐 데이터 저장 및 접근 방식에 차이가 있음을 알게됐음배열 : 연속적인 메모리 공간에 데이터를 저장하고 인덱스를 사용하여 빠르게 접근할 수 있지만, 삽입/삭제가 비효율적연결 리스트 : 각 노드가 다음 요소를 가리키는 방식으로 연결되어 있어 유연한 삽입/삭제 가능 : 하지만, 특정 위치의 데이터에 접근하려면 처음부터 순차적으로 탐색해야 함스택 : LIFO(후입선출) 방식 큐 : FIFO(선입선출) 방식으로 데이터를 처리함시간 복잡도 비교 (배열 : 파이썬 리스트 기준) 평균최선최악접근 (index 접근)O(1)O(1)O(1)탐색 (값 찾기)O(n)O(1)O(n)삽입 (맨 뒤)O(1)O(1)O(n)삽입O(n)O(1)O(n)삭제 (맨 뒤)O(1)O(1)O(1)삭제O(n).. 2025. 8. 18.
11. 파이썬 기초(6) : 복잡도, 선형 자료구조 시간복잡도, 공간복잡도 문제를 해결하기 위한 일련의 절차나 방법인 알고리즘의 성능을 평가할 때 사용하는 개념 : 간단하게 시간복잡도는 알고리즘의 수행 시간을 평가하며, 공간복잡도는 알고리즘 수행에 필요한 메모리 양을 평가함 : 즉, 복잡도가 낮을 수록 좋은 알고리즘이라 얘기할 수 있음둘다 보통 빅-O 표기법(Big O notation)을 사용하여 표현함 : 가장 오래 걸릴 수 있는 상황 : 최악의 경우를 가정하고 알고리즘의 성능을 평가함 : O(n)은 입력 크기 n이 증가할수록 처리 시간이 n에 비례하여 증가 시간복잡도특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 의미 : 같은 결과를 가지는 프로그래밍 소스라도 작성 방법에 따라 걸리는 시간이 다름 : 즉, 시간이 적게 걸리는 것이 좋은 소스 공.. 2025. 8. 18.
10. 다이얼, 빙고, 크로아티아 알파벳, 다트게임 다이얼 alphabet = input("대문자 단어를 입력하세요 : ")time = 0for i in alphabet: if i == 'A' or 'B' or 'C': time += 3 elif i == 'D' or 'E' or 'F': time += 4 elif i == 'G' or 'H' or 'I': time += 5 elif i == 'J' or 'K' or 'L': time += 6 elif i == 'M' or 'N' or 'O': time += 7 elif i == 'P' or 'Q' or 'R' or 'S': time += 8 elif i == 'T' or 'U' or 'V':.. 2025. 8. 16.
9. TODO 리스트를 클래스로 구현하기 index = int(input("\n위의 저장된 TODO리스트 중 수정하고 싶은 리스트는 몇 번째인가요? 숫자로 입력해주세요. : ")) - 1 if index >= len(todolist): print("해당하는 리스트가 없습니다.") else: field = input("\n해당 리스트에서 수정하고 싶은 필드를 알려주세요(이름, 설명, 장소, 시간) : ") if field in todolist[index]:기존 코드는 위와같이 todolist를 받고 인덱스로 길이를 먼저 검사하고 필드를 받는 형식이었음 : mod를 함수로 만들려고 하지만, 이전의 구조상 번거로움 : todolist를 현재 클래스 인스턴스로 정의해놓.. 2025. 8. 14.
8. 파이썬 기초(5) : 클래스 https://docs.python.org/ko/3.9/tutorial/classes.html 9. 클래스 — Python 3.9.23 문서9. 클래스 클래스는 데이터와 기능을 함께 묶는 방법을 제공합니다. 새 클래스를 만드는 것은 객체의 새 형 을 만들어서, 그 형의 새 인스턴스 를 만들 수 있도록 합니다. 각 클래스 인스턴스는docs.python.org 클래스란? : 데이터와 기능을 함께 묶는 구조 : 클래스를 정의 : 객체(인스턴스)를 생성 가능 : 각 인스턴스는 자신만의 상태(attribute)를 가짐 : 메서드(method)를 통해 상태를 변경 가능class Dog: def __init__(self, name, age): # 생성자 (초기 상태 설정) self.name.. 2025. 8. 8.
7. 행렬의 덧셈과 곱셈, TODO 리스트 만들기 행렬의 덧셈 zip() 함수 사용def solution(arr1, arr2): answer = [] for i in range(len(arr1)): answer.append([x + y for x, y in zip(arr1[i], arr2[i])]) return answermatrix1 = [[1, 2], [2, 3]]matrix2 = [[3, 4], [5, 6]]print(solution(matrix1, matrix2))zip() 함수는 같은 위치에있는 요소끼리 묶을 수 있음 : zip(arr1[i], arr2[i]) : 같은 행(i번째)의 원소들을 zip을 사용하여 짝지음 : arr1[0] = [1, 2], arr2[0] = [5, 6.. 2025. 8. 2.