본문 바로가기

분류 전체보기

(291)
자료구조 3주차_큐&해쉬 자료구조 3주차_큐&해쉬 큐 first in first out 선형 구조 나오는 것도 한쪽으로만 나옴! 콘서트 대기순서! 주문이 들어왔을 때 먼저 들어온 순서대로 처리해야 할때. 사용 📌 큐에서 제공하는 기능 enqueue(data) : 맨 뒤에 데이터 추가하기 dequeue() : 맨 앞의 데이터 뽑기 peek() : 맨 앞의 데이터 보기 isEmpty(): 큐가 비었는지 안 비었는지 여부 반환해주기 📄 큐의 구현 class Node: def __init__(self, data): self.data = data self.next = None class Queue: def __init__(self): self.head = None self.tail = None def enqueue(self, value)..
자료구조 2주차 복습&숙제 자료구조 2주차 복습&숙제 요세푸스 문제 📄 나의 코드 (데크 사용 deque) # BOJ 1158 from collections import deque def josephus_problem(n, k): deq = deque() for i in range(n): deq.append(i + 1) result = '' else: result += str(deq[0]) + ', ' deq.popleft() else: temp = deq.popleft() deq.append(temp) cnt += 1 return print(result) n, k = map(int, input().split()) josephus_problem(n, k) 저번에 list로 제출한 것과 로직 동일! 동일한 로직이지만, 자료구조를 뭘..
협업을 위한 Git 활용 1주차 협업을 위한 Git 활용 1주차 Git 버전 관리 도구 📌 버전관리를 한다는 것 프로젝트 상태가 변경되는 정보를 알고 있다는 것. Git은 commit을 사용해서 버전이 달라지는 것을 관리합니다. commit = 버전관리 📌 commit이란? 현재 프로젝트의 상태를 저장! 누가(author) 언제 현재 작업의 상태(현재 파일 내용들, commit 메세지) 📌add (staging) commit에 반영할지 안할지 파일 단위로 선택 세 가지 정보를 포함해 작업내역을 관리. 빨간색 : 삭제된 내용 초록색 : 추가된 내용 📌 history commit들은 곧 history가 됨. 이를 commit history 또는 commit log(기록)이라고 합니다. git 초기화(initialize) .git 폴더 만들..
내일배움캠프 4기_개인진도 2주차 WIL 내일배움캠프 4기_개인진도 2주차 WIL ✏️ 이번주 배운 내용 파이썬 기초 문법 파이썬 기초 문법을 빠르게 배웠다. 기초라 예제도 간단! javascript 올인원 기초 기초 문법을 배웠었다. 개강이 미뤄지면서 사전캠프 때도 독학했던 부분이라 공부했던걸 복습하는 느낌! 자료구조 배열, 링크드리스트, 스택, 정렬, 이분탐색, 최빈값, 최대값 자료구조를 왜 배우는지, 어떤식으로 알고리즘 학습을 진행해야 하는지 ✏️ 어려웠던 부분 개인진도 권장하는 진도율이 너무 말이 안되는...것같다. 자료구조를 일주일만에 골드레벨문제 풀 수 있는 개념까지 배우는 사람이 있을까? 물론 있을 수 도 있지만, 내가 첫번째 프로젝트하고 느낀바로는 극소수지 않을까 싶다. 조원들과도 이부분에 대해 이야기 나눴는데, 다들 천천히 하고..
내일배움캠프 4기_개인진도 10일차 TIL 내일배움캠프 4기_개인진도 10일차 TIL 오늘은 특강이 많았다. 그래서 그런가 목표량을 못채웠다. 원래 큐까지 듣고 싶었는데... fail... 스택까지 들었다. https://pangeei-h.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-3%EC%A3%BC%EC%B0%A8%EC%A0%95%EB%A0%AC 자료구조 3주차_정렬 자료구조 3주차_정렬 버블정렬 바로 옆과 비교해서 자신보다 크면 swap 제일 큰 수가 오른쪽으로가고 고정! 📄 나의 코드 input = [4, 6, 2, 9, 1] def bubble_sort(array): for i in range(len(array) - 1): for j in range(l pangeei-h.tistory..
자료구조 3주차_스택 자료구조 3주차_스택 & 큐 스택(Stack) Last In First Out 되돌리기 할때 사용! push(data) : 맨 위에 데이터 넣기 pop() : 맨 위의 데이터 뽑기 peek() : 맨 위의 데이터 보기 isEmpty() : 스택이 비었는지 안 비었는지 여부 반환 📌 스택 구현 class Node: def __init__(self, data): self.data = data self.next = None class Stack: def __init__(self): self.head = None def push(self, value): new_head = Node(value) new_head.next = self.head self.head = new_head # pop 기능 구현 def pop..
자료구조 3주차_정렬 자료구조 3주차_정렬 버블정렬 바로 옆과 비교해서 자신보다 크면 swap 제일 큰 수가 오른쪽으로가고 고정! 📄 나의 코드 input = [4, 6, 2, 9, 1] def bubble_sort(array): for i in range(len(array) - 1): for j in range(len(array) - 1 - i): if array[j] > array[j + 1]: temp = array[j] array[j] = array[j + 1] array[j + 1] = temp return array bubble_sort(input) print(input) # [1, 2, 4, 6, 9] 가 되어야 합니다! 📄 코드 input = [100,56,-3,32,44] def bubble_sort(arra..
내일배움캠프 4기_개인진도 9일차 TIL 내일배움캠프 4기_개인진도 9일차 TIL 오늘 들은 아침 특강은 예습을 미리 안해서 그런가.. 자료구조 개념까지는 아주 수월하게 이해됐는데, 문제 풀어보라는거에서 아무 문제도 풀지 못했다. 강의를 듣고 다시 특강 자료를 보니 이해가 되서 다행이다! https://pangeei-h.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-2%EC%A3%BC%EC%B0%A8%EC%96%B4%EB%A0%88%EC%9D%B4%EC%99%80-%EB%A7%81%ED%81%AC%EB%93%9C%EB%A6%AC%EC%8A%A4%ED%8A%B8 자료구조 2주차_어레이와 링크드리스트 자료구조 2주차_어레이와 링크드리스트 ARRAY □□□□□□□ 캡슐 호텔과 유사. 크기가 정해진 ..
자료구조 2주차_이진탐색과 재귀함수 자료구조 2주차_이진탐색과 재귀함수 이진탐색 📌 숫자 내림 >>> print((4 + 5) / 2) 4.5 >>> print((4 + 5) // 2) 4 소수점 이하의 수는 모두 버리고 몫만 나타낼 수 있음! 📄나의 코드 finding_target = 5 finding_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] def is_existing_target_number_binary(target, array): start = array[0] end = array[len(array)-1] while start array[mid]: start = mid + 1 return False result = is_existing_target_numb..
자료구조 2주차_어레이와 링크드리스트 자료구조 2주차_어레이와 링크드리스트 ARRAY □□□□□□□ 캡슐 호텔과 유사. 크기가 정해진 데이터 공간 📌 장점 메모리 접근이 쉬워 값을 빠르게 가져올 수 있음(지역적인 특성, Locality) 특정 원소 조회가 쉬움(index로 접근, O(1)의 시간 복잡도를 가짐) 두번째 원소의 메모리 주소 = 최초 원소의 메모리 주소 +( 원소의 데이터 타입에 따른 바이트 크기 ) 예 ) 100, 104, 108, ...(메모리 mapping) 📌 단점 새로운 칸을 지으려면 너무 많은 자원이 필요. 배열은 원소를 중간에 삽입/삭제 하려면 모든 원소를 다 옮겨야 함. 최악의 경우 배열의 길이만큼 옮겨야 하므로 O(N) 시간 복잡도를 가짐. 특정 원소를 삭제하거나 null로 만들어도 그 흔적이 그대로 남아 있음(..