알고리즘 그래프 탐색 - BFS(너비 우선 탐색)
·
TIL
오늘은 그래프의 탐색 방법 중 BFS(너비 우선 탐색)에 대해 알아 보겠다. BFS(너비 우선 탐색)BFS(Breadth-First Search, 너비 우선 탐색)은 그래프 탐색 알고리즘 중의 하나이다. 한 노드에서 시작하여 인접한 모든 노드를 먼저 탐색한 후, 그 다음 레벨의 노드를 탐색하는 방식이다. 그래프나 트리 구조를 탐색할 때 사용되며, 보통 큐(Queue) 자료구조를 사용한다.  핵심 메커니즘BFS는 시작 노드로부터 가까운 노드부터 차례대로 탐색한다. 즉, 현재 레벨의 모든 노드를 탐색한 후에 다음 레벨로 이동한다.BFS는 일반적으로 큐 자료구조를 사용하여 구현된다. 이는 FIFO(First In, First Out) 원칙을 따르므로 노드를 방문한 순서대로 처리할 수 있다.BFS는 가중치 없는..
[TIL] 그래프 1편 - 그래프 정의, 특징, 종류, 구성 요소
·
TIL
그래프 이론 지식 맵그래프를 본격적으로 공부하기 전에 지식 지도를 머리 속에 넣어두고 시작하자. 각 개념이 전체 그래프 이론에서 어떤 위치를 차지하고 있는지 이해할 수 있을 것이다. 오늘 다룰 내용은 그래프의 기본 개념과 구성 요소 Vertex(또는 Edge), Node(또는 Arc)이다.   그래프(Graph)란?그래프는 노드(또는 정점)와 엣지(또는 간선)의 집합으로 구성된 추상적인 자료구조이다. 하지만 그래프 단순히 데이터를 저장하는 구조로만 이해하면 안된다. 그래프는 복잡한 관계를 모델링하고 분석하는 도구로서 알고리즘 설계와 문제 해결에 광범위하게 사용되기 때문이다. 다음은 그래프의 활용 분야와 예시다. 분야예시노드엣지활용소셜 네트워크 분석Facebook, LinkedIn사용자친구 관계친구 추천,..
크래프톤 정글 7기 1주차를 보내며
·
크래프톤 정글
정글에 입소한 지 17일째. 추석 연휴와 함께 1주차가 끝났다. 동료들과 많이 친해졌고, 기숙사 생활도 익숙해졌다. 0주차가 폭풍처럼 정신없었다면, 1주차는 추석 연휴 덕분에 상대적으로 여유로운 시간을 보냈다. 소화해야 할 학습 분량이 적거나 난이도가 쉬웠다는 뜻은 아니다. 내가 무엇을 공부했고, 얼만큼 소화했는지 체크해보고 싶어 1주차 커리큘럼을 표로 정리해봤다. 처참하다. 1주차 커리큘럼분류내용학습 했는가?소화 했는가?키워드 공부 배열O70%  문자열O70% 반복문과 재귀함수O (동료학습)10%  복잡도(BigO, 시간, 공간)O (동료학습)10%  정렬O (동료학습)10%  완전 탐색X0% 정수론O (동료학습)10%  이분 탐색X0% 분할 정복O (동료학습)10%  스택O (동료학습)10%  큐O ..
[TIL] 컴퓨터 시스템 요약 - 1장. 컴퓨터 시스템으로의 여행 (1편)
·
TIL
Bryant O'Hallaron의 을 읽고 요약한 글입니다. C 언어 기준으로 작성되었습니다.  컴퓨터 시스템컴퓨터 시스템www.aladin.co.kr 들어가기 전에 컴퓨터 시스템은 하드웨어와 소프트웨어로 구성되며 이들이 함께 작동하여 응용프로그램을 실행한다. 하드웨어와 소프트웨어는 상호 의존적으로 작동한다. 소프트웨어가 하드웨어에 명령을 내리고, 하드웨어는 이 명령을 실행하여 결과를 만들어낸다. 이러한 상호작용을 통해 사용자가 원하는 작업을 수행할 수 있게 된다. 하드웨어:물리적인 장치들을 포함한다. 주요 구성요소로는 CPU(중앙처리장치), RAM(메모리), 하드 디스크, 마더보드 등이 있다. 입력장치(키보드, 마우스)와 출력장치(모니터, 프린터)도 포함된다. 소프트웨어:컴퓨터에서 실행되는 프로그램들이..
[TIL] Python 문자열(String)의 불변성(Immutability)
·
TIL
파이썬에서 문자열(string)은 불변(immutable) 객체입니다. 이는 한 번 생성된 문자열은 그 내용을 변경할 수 없다는 것을 의미합니다. 하지만 이게 정확히 어떤 의미일까요? 예제를 통해 살펴봅시다.1. 문자열 불변성 예제# 문자열 생성greeting = "Hello"# 문자열 변경 시도try: greeting[0] = "h"except TypeError as e: print(f"오류 발생: {e}")# 출력: 오류 발생: 'str' object does not support item assignment위 코드에서 우리는 greeting 문자열의 첫 번째 문자를 변경하려고 시도했지만, TypeError가 발생했습니다. 이는 문자열이 불변이기 때문입니다. 2. 그렇다면 문자열을 어떻게 ..
[TIL] 자료 구조와 배열 (Python) 5편 - 리스트와 튜플 활용하기
·
TIL
1. len() 함수는 가장 바깥쪽 컨테이너의 원소 개수만 셉니다. nested_list = [[1, 2], [3, 4]]print(len(nested_list)) # 2를 출력합니다, 내부 리스트의 원소는 세지 않습니다.원소 자체가 리스트(또는 튜플이나 집합인 경우) 경우 1개로 계산합니다. 2. min(), max() 함수로 배열의 최솟값과 최댓값 구하기 # 숫자 리스트numbers = [4, 2, 9, 7, 5, 1, 8, 3, 6]# 최솟값 구하기min_value = min(numbers)print(f"최솟값: {min_value}") # 출력: 최솟값: 1# 최댓값 구하기max_value = max(numbers)print(f"최댓값: {max_value}") # 출력: 최댓값: 9min(..
[TIL] 자료 구조와 배열 (Python) 4편 - 뮤터블과 이뮤터블 객체의 대입
·
TIL
1. 뮤터블(mutable) 객체의 대입  뮤터블 객체는 화이트보드와 같습니다. 화이트보드에 글을 쓰고 지우고 다시 쓸 수 있듯이, 뮤터블 객체도 생성 후에 내용을 변경할 수 있습니다. 여러 사람이 같은 화이트보드를 보고 있다면, 한 사람이 내용을 변경하면 모두가 그 변경을 볼 수 있습니다. 리스트(list), 딕셔너리(dict), 집합(set) 등이 해당됩니다.객체 생성 후 그 값을 변경할 수 있습니다.대입 시 객체의 참조가 복사됩니다."객체의 참조가 복사된다"는 말은 실제 데이터를 복사하는 것이 아니라, 데이터가 저장된 메모리 주소를 복사한다는 의미입니다.# 뮤터블 객체 (리스트) 예시original_list = [1, 2, 3]copied_list = original_list # 참조가 복사됨pr..
[TIL] 파이썬의 인수 전달 방식 이해하기
·
TIL
1. 기본 개념파이썬에서는 함수에 인수를 전달할 때 "객체 참조에 의한 전달(call by object reference)" 방식을 사용합니다. 이는 실제 객체의 참조(주소)가 전달된다는 의미입니다.2. 비유로 이해하기이것은 마치 책의 위치를 알려주는 것과 같습니다:함수에 인수를 전달하는 것 = 책의 위치를 알려주는 것실제 객체 = 책참조 = 책의 위치3. Immutable(변경 불가능한) 객체와 Mutable(변경 가능한) 객체의 차이3-1. Immutable 객체 (예: 정수, 문자열, 튜플)입력: def change_number(n): n += 10 print("함수 내부:", n)x = 5change_number(x)print("함수 외부:", x) 출력 :함수 내부: 15함수 외부: ..