본문 바로가기

전체 글85

[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.
[TIL] 20241125 🥳 오늘은 나의 생일 🎂     그리고 앞으로를 위한 고민의 날오늘은 내 생일이다. 그런데 묘하게도 축하보다는 앞으로의 계획들로 머리가 꽉 찼던 하루였다. 그중 가장 크게 든 생각은 바로 취업의 어려움. 서류 전형 하나 통과하는 게 이렇게 어려울 줄은 몰랐다. 지난 1년, 그리고 나의 성장1년이라는 시간 동안 개발 공부에 몰두해 왔다. 처음에는 막막했지만, 꾸준히 공부하며 MSA, Kafka, Redis 같은 기술을 활용해 프로젝트를 완성할 정도로 성장했다. 스스로도 이만큼 해낸  자신이 대견하기도 하다. 하지만 여전히 넘어야 할 산이 많다는 것을 느낀다. 그동안은 앞으로만 달려가느라 내가 놓치고 있던 것들을 돌아보지 못했다. 그런데 요즘, 스스로가 부족하다고 느끼는 기술들에 대해 제대로 공부하고 보완할 .. 2024. 11. 26.