본문 바로가기

분류 전체보기243

선형구조 큐(Queue) 기본 원리와 종류 (단순 큐, 순환 큐, 우선순위 큐) 선형구조 큐(Queue) 기본 원리와 종류 (단순 큐, 순환 큐, 우선순위 큐) 데이터 구조는 컴퓨터 과학에서 데이터를 효율적으로 관리하고 처리하는 기초를 형성합니다. 특히, 선형 구조에 속하는 큐는 데이터 처리와 관리에 있어서 필수적인 개념입니다. 본 글에서는 큐의 기본적인 개념에서부터 다양한 종류를 깊이 있게 탐구해보고자 합니다. 큐(Queue)에 대해 큐의 기본 구조와 종류 큐(Queue)는 선입선출(FIFO: First In, First Out)의 원칙에 따라 데이터를 관리하는 선형 데이터 구조입니다. 데이터가 들어온 순서대로 처리됩니다. 이 기본적인 큐 외에도, 큐는 여러 형태로 변형되어 특정 상황에서 보다 효율적으로 사용됩니다. 대표적인 큐의 종류로는 다음과 같은 것들이 있습니다. 단순 큐(S.. 2024. 3. 16.
코딩테스트 큐(queue) 문제 - 기능개발 풀이 과정 및 코드 리팩토링 코딩테스트 큐(queue) 문제 - 기능개발 풀이 과정 및 코드 리팩토링 프로젝트의 성공적인 완성을 위해서는 각 기능의 개발 및 배포가 중요한 역할을 합니다. 특히 현대의 소프트웨어 개발 과정에서는 여러 기능이 동시에 개발되며, 이들의 개발 속도와 배포 순서가 프로젝트 진행에 큰 영향을 미칩니다. "기능개발" 문제는 이러한 현실적 상황을 반영한 프로그래밍 문제로, 각 기능의 개발 진도와 속도를 고려하여 배포 순서와 각 배포마다 몇 개의 기능이 완성되는지를 예측해야 합니다. 이 글을 통해 문제를 해결하는 과정을 살펴보면, 효율적인 프로젝트 관리와 개발 스케줄링에 대한 인사이트를 얻을 수 있습니다. 코딩테스트 큐 문제 - 기능개발 ▼ 문제 직접 확인해보세요! ▼ 프로그래머스 코드 중심의 개발자 채용. 스택 .. 2024. 3. 15.
1974. Minimum Time to Type Word Using Special Typewriter 1974. Minimum Time to Type Word Using Special Typewriter 특별한 원형 타자기에서 문자를 입력하는 과정은 일상의 타이핑과는 사뭇 다른 경험을 제공합니다. 이 가상의 타자기는 영문 소문자 'a'부터 'z'까지를 원형으로 배열해 놓았고, 문자를 입력하기 위해서는 포인터를 해당 문자에 정확히 맞춰야만 합니다. 여기서는 문자 입력에 드는 최소 시간을 계산하는 문제를 다룹니다. 이 글을 통해 효율적인 알고리즘 설계의 중요성과, 각 문자 간의 거리를 계산하는 흥미로운 방법을 배울 수 있을 것입니다. 코딩테스트 문제 해결 과정 "1974. Minimum Time to Type Word Using Special Typewriter" 문제는 특별한 타자기를 사용하여 단어를 입력.. 2024. 3. 15.
코딩테스트 스택(stack) 문제 - 같은 숫자는 싫어 해결 과정 코딩테스트 스택(stack) 문제 - 같은 숫자는 싫어 해결 과정 우리는 일상 생활 속에서도 불필요한 중복을 피하려는 경향이 있습니다. 이는 프로그래밍에서도 마찬가지로, 특히 배열과 같은 데이터 구조를 다룰 때 연속적인 중복을 제거하는 것은 메모리 효율성과 처리 속도를 높이는 데 중요합니다. "같은 숫자는 싫어" 문제는 이러한 중복 제거의 기본 원리를 이해하고, 실제로 적용해볼 수 있는 좋은 예시를 제공합니다. 이번 글에서는 문제 해결 과정을 통해 배열을 효율적으로 다루는 방법을 배우고, 이를 다양한 프로그래밍 상황에 적용하는 방법에 대해 알아보겠습니다. 코딩테스트 스택 문제 - 같은 숫자는 싫어 ▼ 직접 풀어보고 오세요 ▼ 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의.. 2024. 3. 14.
선형구조 연결 리스트의 기본 원리와 종류 선형구조 연결 리스트의 기본 원리와 종류 컴퓨터 과학에서 데이터 구조는 정보를 효율적으로 저장, 관리, 처리하기 위한 기본적인 구성 요소입니다. 특히, 연결 리스트는 데이터를 선형으로 저장하는 기본적인 구조 중 하나로, 다양한 프로그래밍 상황에서 유용하게 사용됩니다. 이 글에서는 연결 리스트의 개념, 종류, 그리고 구조체를 이용한 구현 방법을 알아보며, 프로그래밍에서의 연결 리스트 활용의 중요성을 이해할 것입니다. 연결 리스트에 대해 연결 리스트는 일련의 연결된 노드를 포함하는 선형 데이터 구조로, 각 노드가 데이터 항목과 다음 노드의 주소를 포함합니다. 이 구조는 데이터의 동적 추가 및 삭제가 용이하며, 미리 공간을 할당하지 않아도 되는 이점이 있습니다. 단일 연결 리스트(Single Linked Li.. 2024. 3. 13.
TypeScript 컴파일 하는 방법, 기초부터 Watch Mode까지 TypeScript 컴파일 하는 방법, 기초부터 Watch Mode까지 현대 웹 개발에서 TypeScript는 점점 그 중요성을 더해가고 있습니다. 강력한 타입 시스템을 통해 개발자들이 더 안정적이고 관리하기 쉬운 코드를 작성할 수 있게 돕기 때문입니다. 하지만 TypeScript를 사용하기 위해서는 먼저 TS 파일을 일반 JavaScript 파일로 컴파일하는 과정이 필요합니다. 이 글에서는 TypeScript 파일을 컴파일하는 방법을 소개하고, 이 과정이 왜 중요한지에 대해 설명하겠습니다. TypeScript를 시작하는 분들에게 이 글이 길잡이가 되었으면 합니다. TypeScript 컴파일 하는 방법 TypeScript 컴파일의 필요성 TypeScript는 브라우저에서 직접 실행될 수 없습니다. 따라서.. 2024. 3. 13.
2619. Array Prototype Last 문제 소개, 풀이 과정 및 코드 리팩토링 2619. Array Prototype Last 문제 소개, 풀이 과정 및 코드 리팩토링 자바스크립트의 배열은 매우 강력한 데이터 구조 중 하나입니다. 하지만 때때로 우리는 배열의 마지막 요소에 쉽게 접근하고 싶어 할 때가 있습니다. 표준 배열 메서드만으로는 이 기능이 직관적이지 않을 수 있기에, 배열의 마지막 요소를 쉽게 얻을 수 있는 .last() 메서드를 구현하는 방법에 대해 알아보겠습니다. 이 글을 통해 자바스크립트의 프로토타입을 활용한 강력한 확장성에 대해서도 이해할 수 있을 것입니다. 2619. Array Prototype Last 문제 소개 배열에 .last() 메서드를 추가하여, 이 메서드를 호출할 때마다 배열의 마지막 요소를 반환하도록 하는 기능을 구현해야 합니다. 배열이 비어있다면 -1.. 2024. 3. 13.
축구팀 관리 프로젝트 - 경기 데이터 기반 추천 포메이션 기능 축구팀 관리 프로젝트 - 경기 데이터 기반 추천 포메이션 기능 축구 경기의 승리는 수많은 변수에 의해 결정되며, 이 중에서도 '포메이션'은 경기의 결과에 큰 영향을 미칩니다. 그러나, 많은 팀들이 데이터 기반 의사결정을 통해 최적의 포메이션을 찾는 데 어려움을 겪고 있습니다. 본 글에서는 프로젝트의 시간적 제약과 기술적 난이도를 고려하여, 머신러닝 대신 기존의 경기 데이터를 활용한 경험적 분석 방법을 통해 최적의 포메이션을 찾는 과정을 소개합니다. 이 접근 방식은 고도의 데이터 분석 기법을 적용하지 않았음에도 불구하고, 사용자에게 실질적인 가치를 제공하는 현실적인 해결책을 찾는 데 성공했습니다. 경기 데이터 기반 추천 포메이션 문제 소개 프로젝트의 목표 중 하나로, 각 팀의 경기결과(승, 무, 패)와 포.. 2024. 3. 12.
축구팀 관리 프로젝트 - 데이터베이스 인덱싱으로 성능 최적화 축구팀 관리 프로젝트 - 데이터베이스 인덱싱으로 성능 최적화 프로젝트에서 데이터 조회 속도는 사용자 경험에 직접적인 영향을 미치는 중요한 요소였니다. 특히 경기장 정보를 조회할 때, 방대한 양의 데이터로 인해 검색 시간이 길어지는 문제에 직면했습니다. 이 문제를 해결하기 위해 데이터베이스 인덱싱이라는 도구를 사용하여, 검색 성능을 획기적으로 개선하는 방법을 모색했습니다. 데이터베이스 인덱싱으로 성능 최적화 문제 상황 프로젝트 배경: 경기장 정보 조회 기능 개발 문제점: 대규모 데이터로 인한 느린 조회 속도 목표: 조회 속도 개선 해결 방법 : 인덱싱을 통한 속도 개선 인덱싱을 사용하지 않았을 때의 상황 쿼리 비용: "9109.05" 인덱싱을 도입한 후의 변화 쿼리 비용: "1.05" 해결 방안의 탐색 [.. 2024. 3. 12.