본문 바로가기

전체 글632

세그먼트 트리에 대해 알아보자: 해결하는 문제와 데이터 구조, 작동 방식, 사용 사례, 자바 코드 개요세그먼트 트리는 효율적인 데이터 관리와 빠른 쿼리를 가능하게 해주는 데이터 구조이다. 특히, 누적 합 계산이나 특정 구간의 최대값, 최소값을 빠르게 처리해야 하는 경우 유용하게 쓰인다. 💡 이 글에서는 세그먼트 트리가 해결하는 문제와 그 이유, 작동 원리와 활용 사례에 대해서 살펴본다.문제 상황 🧐다음과 같은 배열 {1, 3, 5, 7, 9}를 생각해보자. 이에 대해서 다음과 같은 연산을 해야 하는 상황이다.구간 합 구하기예를 들어, 배열의 2번째부터 4번째 숫자의 합을 계산하려면 3 + 5 + 7 = 15이다.값 업데이트배열의 특정 값을 바꿔야 한다면 어떻게 될까요? 예를 들어, 5를 6으로 변경한다면 배열은 {1, 3, 6, 7, 9}로 변한다.이 배열에 대해, 직관적으로 구간 합을 구하거나 .. 2024. 12. 21.
대기업과 스타트업, 보수와 진보, 그리고 정치적 무관심, 내란과 민주주의에 대한 소회 (feat. 토요일 밤에 윤석열 탄핵 🎶) 이 글에 대해서슬랙 대화 중 “대기업 경험은 어떠세요? 성장하는 스타트업 vs 안정적인 대기업?”이라는 질문에서 시작되었다. 당시에는 선뜻 답을 내지 못했지만, 아침 출근길 찬 바람을 맞으며 걷는 중 생각이 꼬리를 물었다. 대기업은 보수와 닮아 있고, 스타트업은 진보와 닮아 있다는 가벼운 단상에서 출발했다. 그러다 노동자로서 우리가 당연하게 여기는 권리들, 그리고 민주주의라는 더 큰 가치에 대한 사유로 점차 확장되었다. 가장 밑에 민주주의라는 가장 큰 틀이 있었다. 최근 2주간 이어진 윤석열 내란 사태는, 당연하게 여겼던 민주주의가 얼마나 당연하지 않을 수 있는 것일지 적나라하게 상기시키는 사건이었다. 국민으로서, 그리고 역사적 증인의 한 사람으로서 정치적 무관심이 어떤 멸망적인 결과를 초래할 수 있는지.. 2024. 12. 14.
백준 5639 이진 검색 트리 (JAVA 자바 풀이) https://www.acmicpc.net/problem/12873 📌 문제 이진 검색 트리는 다음과 같은 세 가지 조건을 만족하는 이진 트리이다.노드의 왼쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 작다.노드의 오른쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 크다.왼쪽, 오른쪽 서브트리도 이진 검색 트리이다.전위 순회 (루트-왼쪽-오른쪽)은 루트를 방문하고, 왼쪽 서브트리, 오른쪽 서브 트리를 순서대로 방문하면서 노드의 키를 출력한다. 후위 순회 (왼쪽-오른쪽-루트)는 왼쪽 서브트리, 오른쪽 서브트리, 루트 노드 순서대로 키를 출력한다. 예를 들어, 위의 이진 검색 트리의 전위 순회 결과는 50 30 24 5 28 45 98 52 60 이고, 후위 순회 결과는 5 28 24 45 30 .. 2024. 11. 23.
충돌 없는 완벽한 해싱이 존재한다고 ? (퍼펙트 해싱 개념 및 사례, 최적화 방법에 대해서) 이 글의 탄생 배경, 이 글에 대해서코딩 스터디 중 해싱 챕터에서 시간 복잡도를 주제로 이야기할 때였다. 해싱하면 연상되는 이미지는 당연히 "빠르다"였고 나는 당연스럽게 O(1)이지! 라고 생각하며 대화를 이어나갔는데, 한 멤버가 질문했다."어... 해싱도 최악의 경우는 O(n) 아니에요?"어라, 순간 멈칫했다. 사실 해싱에서 최악의 경우는 O(n)이라는 걸 깜빡하고 있었다! 자바에서 해싱을 사용할 때는 충돌 문제를 자동으로 처리해주고, 또 key-value 스토어로서 레디스와 같은 저장소를 사용할 때, 단순히 "빠르다"는 이미지에만 노출되어 있다 보니 당연히 해싱은 O(1)이라고 생각했던 것이다. 문득 기억을 환기시키며 깨달았다. 앗,,, 해싱은 충돌이 없다면 O(1)이지만, 충돌이 발생하면 O(n)이.. 2024. 11. 2.
GPT 복붙만으로 프로그램을 만들 수 있을까? (feat. AI 시대의 개발자, 기묘한 질문들, 그리고 낯설고도 친절한 어떤 존재에 대해서) 이 글에 대해서이 글은 두 가지 파트로 구성됩니다. 첫 번째 파트에서는 ChatGPT를 이용해 단순한 복사 붙여 넣기 만으로 파이썬 프로그램을 만든 실험을 소개합니다. 전투 시뮬레이션 게임에 대한 전문 지식도 파이썬으로 게임을 만들어 본 경험도 없지만, 코드 한 줄 작성하지 않고 GPT만으로 프로그램을 구현하는 과정을 상세히 작성해 보았습니다. 두 번째 파트에서는, 이 과정을 통해 느낀 점과 AI 시대의 개발자라는 주제로 조금 더 깊이 있는 회고와 성찰을 담았습니다. 단순히 AI로 프로그램을 만드는 것을 넘어, AI 시대에 ‘개발자’란 어떤 의미가 있는지, 그 미래에 대해 최근 생각하는 개인적인 견해를 정리해 보았습니다.☘️ PART 1. GPT 복붙만으로 프로그램을 만들 수 있을까?사건의 발단노앤써라는.. 2024. 10. 26.