우선순위 큐(Priority Queue)란? 우선순위 큐(Priority Queue)는 데이터를 저장하고 관리하는 자료구조 중 하나입니다. 일반적인 큐(Queue)와 유사하게 요소를 저장하는 방식으로 FIFO(First In First Out)의 구조를 가집니다. 그러나 우선순위 큐(Priority Queue)는 삽입된 순서로 요소를 처리하는 것이 아니라, 우선순위에 따라 정렬되어 우선순위가 높은 요소가 먼저 처리됩니다. 우선순위 큐(Priority Queue) 특징 요소들이 우선순위에 따라 정렬되어 저장된다. 즉 가장 높은 우선순위를 갖는 요소가 가장 먼저 처리된다. 내부 요소가 Heap으로 구성되어 이진트리 구조로 이루어져 있다. 빠른 삽입과 삭제 연산을 빠르게 수행할 수 있다. 시간 복잡도는 0(N..
https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한..
MVC 패턴 MVC 패턴은 소프트웨어 디자인 패턴 중 하나로 웹 애플리케이션의 구조를 구성하는 방법론입니다. MVC는 Model-View-Controller의 약자로 3가지 주요 구성 요소를 분리하여 유지보수성을 향상하고 애플리케이션의 확장성을 높이는 것을 목표로 합니다. MVC 패턴의 동작 구조는 다음과 같이 정리할 수 있습니다. 사용자가 요청을 보내면, 특정 URL 및 HTTP 메서드에 따라 Controller에게 라우팅 됩니다. Controller를 통해 비즈니스 로직을 처리한 후, 결과를 Model에 담습니다. Model에 담긴 결과를 바탕으로 Controller는 적절한 View를 선택하여 사용자에게 전달합니다. 이를 바탕으로 사용자 관점에서 쉽게 풀어쓰면 다음과 같습니다. 사용자는 웹 사이트에..
https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지..
https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두..
https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 ..
https://school.programmers.co.kr/learn/courses/30/lessons/12973#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성..
피보나치 수열은 다양한 알고리즘에서 사용되며 재귀의 좋은 예시를 제공합니다. 해당 포스팅을 통해 피보나치의 수열을 이해하고 활용 방법에 대해 정리하려고 합니다. 피보나치 수열(Fibonacci numbers)이란? 이전 두 항의 합이 다음 항이 되는 수열을 의미합니다. 첫 번째와 두 번째 항이 1이고, 세 번째 항부터는 이전 두 항의 합으로 이루어지는 규칙을 따릅니다. 피보나치 수열의 첫 번째 항은 f(0), 두 번째 항을 f(1)으로 정의합니다. f(0) = 1 f(1) = 1 이때 n번 째 항은 (n - 1)번째 항 + (n - 2)번째 항입니다. f(n) = f(n-1) + f(n-2) 피보나치 수열의 첫 번째 항부터 순서대로 예시를 본다면 1, 1, 2, 3, 5, 8, 13, 21, 34, 55..