본문 바로가기

전체 글74

[Review] 왜 당신은 다른 사람을 위해 살고 있는가 "Why do you scarifice your life for others?" 철학과 인문학, 어디서부터 시작할까? 📖철학과 인문학에 관심이 생겼지만, 어떤 책부터 읽어야 할지 망설이고 있다면 이 책을 추천합니다.며칠 전, 사당역 근처 카페에서 약속이 있어 지하철을 내려 이동하던 중 우연히 영풍문고를 발견했습니다.시간이 조금 남아 들어가 보니, 매장 정면 가장 눈에 띄는 자리에 이 책이 산처럼 쌓여 있는 모습을 발견했죠.그 광경만으로도 얼마나 많은 사람들에게 사랑받고 관심받는 책인지 느껴졌습니다. 2주 동안 느낀 책의 매력 이 책을 읽는 데 약 2주 정도 걸렸습니다.챕터 하나당 2~3장으로 짧아 부담 없이 읽기 좋았고, 작고 가벼운 구성 덕분에 지하철 이동 중, 점심시간, 공부하다 쉬는 시간에 틈틈이.. 2024. 12. 8.
[CS 운영체제] 운영체제, 이름만 알던 그것의 정체 당신은 운영체제가 무슨 일을 하는지 알고 있는가.  운영체제, 이름은 알겠는데 그게 뭔데 ❓우리는 윈도우, 맥OS, 리눅스, 안드로이드 같은 운영체제의 이름을 쉽게 떠올릴 수 있습니다. 하지만 운영체제가 실제로 어떤 일을 하는지를 정확히 아는 사람은 많지 않을 겁니다. 왜냐하면 제가 그랬거든요 😊 그래서 오늘은 운영체제가 어떤 역할을 하는지에 대해 알아보도록 하겠습니다!  운영체제의 핵심 기능 우리가 흔히 사용하는 운영체제에는 데스크탑용, 모바일용 등 다양한 종류가 있습니다.데스크탑 OS: 윈도우, 맥 OS, 리눅스 🖥️모바일 OS: 안드로이드, iOS 📱이 외에도 서버용, 임베디드용 등 다양한 목적의 운영체제가 있지만, 운영체제가 제공하는 핵심 기능은 모두 유사합니다. 운영체제는 어디에 저장될까?.. 2024. 12. 7.
[이론] 버블 정렬 알고가기 버블 정렬은 왜 버블 정렬일까? 🤔버블 정렬이라는 이름은 딱 들었을 때 뭔가 귀엽고 친근한 느낌을 받았습니다. 처음 들었을 때 이름이 너무 매력적이라 "왜 이런 이름이 붙었을까?" 궁금했는데, 그 이유를 알고 나니 정말 딱 맞는 이름이라는 생각이 들었습니다! "버블"의 의미 🫧버블 정렬(Bubble Sort)은 배열의 요소들이 거품처럼 위로 보글보글 올라가는 모습과 비슷하다고 해서 붙여진 이름입니다.오름차순 기준 큰 값이 반복적으로 비교되어 점점 위로 올라가고, 가장 큰 값이 맨 끝에 위치하게 됩니다.마치 물속의 거품이 위로 올라가며 터지는 것과 유사하죠! 버블 정렬의 작동 원리 ✍️버블 정렬은 인접한 두 값을 비교하여 잘못된 순서를 가진 값들을 서로 교환합니다.가장 큰 값이 배열의 끝으로 밀려나면서.. 2024. 12. 5.
[백준 2018] 문제로 이해하는 투 포인터 JAVA 투 포인터 투 포인터(Two Pointers)는 두 개의 포인터를 이용해 문제를 효율적으로 해결하는 알고리즘 기법입니다.이 기법은 주로 정렬된 배열이나 연속적인 구간에서 조건을 만족하는 값을 찾을 때 사용됩니다. 투 포인터 사용 이유 🤔투 포인터는 O(N) 또는 O(N log N)의 시간복잡도로 문제를 해결할 수 있으며, 특히 정렬된 배열에서 최적화된 탐색이 가능하다는 점이 큰 장점 입니다. 투 포인터의 기본 동작 방식 🎯 포인터 초기화보통 시작점 left 와, 끝점 right 를 배열의 양 끝에 둡니다. 조건 확인두 포인터가 가리키는 값이 조건을 만족하는지 확인합니다. 포인터 이동조건에 따라 왼쪽 포인터 또는 오른쪽 포인터를 이동시킵니다. 포인터가 서로 교차할 때까지 반복두 포인터가 교차하면 탐색을.. 2024. 12. 5.
[이론] 구간 합, 합 배열 구하기 구간 합: 시간 복잡도를 줄이는 특수한 알고리즘 구간 합은 특정 구간의 합을 빠르게 구하기 위해 사용되는 알고리즘입니다.이 알고리즘의 핵심은 "합 배열"이라는 개념을 활용해 계산량을 줄이는 데 있습니다.  구간 합이란? 🤔구간 합은 간단히 말해, 배열 A에서 특정 구간 [ i , j ]의 합을 빠르게 구하는 방법입니다.예를 들어, 배열 A가 다음과 같다고 가정해보겠습니다. 구간 [1, 4] 의 합은 2 + 4 + 1 + 5 = 12 입니다.하지만 단순히 반복문을 이용해서 계산한다면, 시간 복잡도가 O(N)에 해당할 수 있습니다.이 과정을 더 빠르게 해결하기 위해 합 배열을 활용합니다.  구간 합의 핵심 이론: 합 배열 만들기 📚합 배열(S)은 배열의 각 위치까지의 누적 합을 저장한 배열입니다.이를 통.. 2024. 12. 5.
[알고리즘] 시간 복잡도 최대한 쉽게 이해하기 알고리즘을 처음 시작하는 코린이들을 위한 시간복잡도 이야기 🕰️안녕하세요! 알고리즘에 갓 입문한 코린이 여러분!오늘은 저와 같은 코린이 분들을 위해 시간복잡도를 조금이라도 쉽게 이해하실 수 있도록 최대한 간단히 이야기해 보려고 합니다. 참고로 저는 “Do it! 알고리즘 코딩테스트 with Java” 책을 기반으로 공부하고 있어요. 시간복잡도에서 핵심은 빅-O 표기법이기 때문에, 빅-O 표기법을 중심으로 살펴보겠습니다! 😊 시간복잡도, 그게 뭔데?시간복잡도는 주어진 문제를 해결하기 위해 프로그램이 실행해야 하는 연산의 횟수를 의미해요. 수행 시간은 1억 번의 연산을 1초의 시간으로 간주하여 예측합니다. 하지만 처음 들으면 조금 추상적으로 느껴질 수 있어요. 그래서 더 쉽게 풀어볼게요! 😊 수행시간,.. 2024. 11. 27.