프론트엔드 공부/자료구조 & 알고리즘
-
스택이란 무엇일까? 스택은 기본적으로 박스 쌓기와 비슷합니다. 맨 위에 있는 상자만 접근할 수 있습니다. 그래서 스택에서 데이터를 추가하거나 제거할 때, 항상 맨 위의 상자를 조작합니다. 이렇게 상자를 쌓아 올리는 것을 "푸시(push)"라고 부르며, 맨 위의 상자를 빼내는 것을 "팝(pop)"이라고 부릅니다. 스택은 일상 생활에서도 자주 사용됩니다. 예를 들어, 접시를 쌓아 놓은 것을 생각해 본다면 가장 마지막에 쌓은 접시를 먼저 꺼내게 됩니다. 이렇게 쌓여있는 접시들은 스택과 유사한 구조를 가지고 있습니다. 접시를 쌓으려면, 처음에는 바닥에 하나의 접시를 놓습니다. 그런 다음 다음 접시를 가져와 첫 번째 접시 위에 올립니다. 이렇게 쌓기를 반복하면 스택이 형성됩니다. 여기서 스택은 먼저 쌓인 접시가 ..
[자료구조] stack스택이란 무엇일까? 스택은 기본적으로 박스 쌓기와 비슷합니다. 맨 위에 있는 상자만 접근할 수 있습니다. 그래서 스택에서 데이터를 추가하거나 제거할 때, 항상 맨 위의 상자를 조작합니다. 이렇게 상자를 쌓아 올리는 것을 "푸시(push)"라고 부르며, 맨 위의 상자를 빼내는 것을 "팝(pop)"이라고 부릅니다. 스택은 일상 생활에서도 자주 사용됩니다. 예를 들어, 접시를 쌓아 놓은 것을 생각해 본다면 가장 마지막에 쌓은 접시를 먼저 꺼내게 됩니다. 이렇게 쌓여있는 접시들은 스택과 유사한 구조를 가지고 있습니다. 접시를 쌓으려면, 처음에는 바닥에 하나의 접시를 놓습니다. 그런 다음 다음 접시를 가져와 첫 번째 접시 위에 올립니다. 이렇게 쌓기를 반복하면 스택이 형성됩니다. 여기서 스택은 먼저 쌓인 접시가 ..
2023.03.14 -
자료구조란 무엇일까요? 개발에서의 자료구조란 컴퓨터 프로그램이나 소프트웨어 어플리케이션에서 데이터를 조직화하고 저장하는 방식을 의미합니다. 데이터를 효율적이고 최적화된 방법으로 접근하고 조작하는 체계적인 방법을 제공합니다. 대표적인 데이터 구조로는 배열, 연결 리스트, 스택, 큐, 트리, 그리고 그래프 등이 있습니다. 데이터란? 컴퓨터 프로그램이나 소프트웨어 어플리케이션이 처리하거나 분석할 수 있는 사실, 숫자, 또는 다른 정보의 집합을 의미합니다. 텍스트, 이미지, 오디오, 비디오 또는 구조화된 데이터와 같이 쉬운 접근과 조작을 위해 특정 형식으로 구성된 다양한 형태를 가질 수 있습니다. 자주 등장하는 네 가지의 자료구조는 Stack, Queue, Tree, Graph 선형 자료 구조(Linear Da..
자료구조란 무엇일까요?자료구조란 무엇일까요? 개발에서의 자료구조란 컴퓨터 프로그램이나 소프트웨어 어플리케이션에서 데이터를 조직화하고 저장하는 방식을 의미합니다. 데이터를 효율적이고 최적화된 방법으로 접근하고 조작하는 체계적인 방법을 제공합니다. 대표적인 데이터 구조로는 배열, 연결 리스트, 스택, 큐, 트리, 그리고 그래프 등이 있습니다. 데이터란? 컴퓨터 프로그램이나 소프트웨어 어플리케이션이 처리하거나 분석할 수 있는 사실, 숫자, 또는 다른 정보의 집합을 의미합니다. 텍스트, 이미지, 오디오, 비디오 또는 구조화된 데이터와 같이 쉬운 접근과 조작을 위해 특정 형식으로 구성된 다양한 형태를 가질 수 있습니다. 자주 등장하는 네 가지의 자료구조는 Stack, Queue, Tree, Graph 선형 자료 구조(Linear Da..
2023.03.14 -
박스 포장 문제 마트에서 장을 보고 박스를 포장하려고 합니다. 박스를 포장하는 데는 폭이 너무 좁습니다. 그렇기에 한 줄로 서 있어야 하고, 들어온 순서대로 한 명씩 나가야 합니다. 불행 중 다행은, 인원에 맞게 포장할 수 있는 기구들이 놓여 있어, 모두가 포장을 할 수 있다는 것입니다. 짐이 많은 사람은 짐이 적은 사람보다 포장하는 시간이 길 수밖에 없습니다. 뒷사람이 포장을 전부 끝냈어도 앞사람이 끝내지 못하면 기다려야 합니다. 앞사람이 포장을 끝내면, 포장을 마친 뒷사람들과 함께 한 번에 나가게 됩니다. 만약, 앞사람의 박스는 5 개고, 뒷사람 1의 박스는 4 개, 뒷사람 2의 박스는 8 개라고 가정했을 때, 뒷사람 1이 제일 먼저 박스 포장을 끝내게 되어도 앞사람 1의 포장이 마칠 때까지 기다렸다..
[Queue] 박스 포장박스 포장 문제 마트에서 장을 보고 박스를 포장하려고 합니다. 박스를 포장하는 데는 폭이 너무 좁습니다. 그렇기에 한 줄로 서 있어야 하고, 들어온 순서대로 한 명씩 나가야 합니다. 불행 중 다행은, 인원에 맞게 포장할 수 있는 기구들이 놓여 있어, 모두가 포장을 할 수 있다는 것입니다. 짐이 많은 사람은 짐이 적은 사람보다 포장하는 시간이 길 수밖에 없습니다. 뒷사람이 포장을 전부 끝냈어도 앞사람이 끝내지 못하면 기다려야 합니다. 앞사람이 포장을 끝내면, 포장을 마친 뒷사람들과 함께 한 번에 나가게 됩니다. 만약, 앞사람의 박스는 5 개고, 뒷사람 1의 박스는 4 개, 뒷사람 2의 박스는 8 개라고 가정했을 때, 뒷사람 1이 제일 먼저 박스 포장을 끝내게 되어도 앞사람 1의 포장이 마칠 때까지 기다렸다..
2023.03.14 -
유효한 괄호쌍 문제 입력된 괄호 값들이 모두 쌍이 맞게 올바른지를 판단해 모두 쌍이 맞으면 true 그렇지 않으면 false를 출력하세요. 입력된 괄호 값들이 유효한 경우들은 다음에 해당합니다. 열린 괄호는 같은 타입의 닫힌 괄호로 닫혀있어야 한다. 열린 괄호는 올바른 순서대로 닫혀야만 한다. 모든 닫힌 괄호는 그에 상응하는 같은 타입의 열린 괄호를 갖고 있다. 입력값을 통해 들어오는 괄호는 ()[]{}로만 이루어져 있습니다. 입력 인자 1 : str string 타입으로 된 문장 출력 boolean 타입을 리턴해야 합니다. 주의 사항 입력값을 통해 들어오는 괄호는 ()[]{}로만 이루어져 있습니다. 입력값으로 들어오는 str의 길이는 0부터 10^4승 까지 입니다. 입출력 예시 const result1..
[Stack] 유효한 괄호쌍유효한 괄호쌍 문제 입력된 괄호 값들이 모두 쌍이 맞게 올바른지를 판단해 모두 쌍이 맞으면 true 그렇지 않으면 false를 출력하세요. 입력된 괄호 값들이 유효한 경우들은 다음에 해당합니다. 열린 괄호는 같은 타입의 닫힌 괄호로 닫혀있어야 한다. 열린 괄호는 올바른 순서대로 닫혀야만 한다. 모든 닫힌 괄호는 그에 상응하는 같은 타입의 열린 괄호를 갖고 있다. 입력값을 통해 들어오는 괄호는 ()[]{}로만 이루어져 있습니다. 입력 인자 1 : str string 타입으로 된 문장 출력 boolean 타입을 리턴해야 합니다. 주의 사항 입력값을 통해 들어오는 괄호는 ()[]{}로만 이루어져 있습니다. 입력값으로 들어오는 str의 길이는 0부터 10^4승 까지 입니다. 입출력 예시 const result1..
2023.03.14 -
보호되어 있는 글입니다.
길이가 m, n이고 오름차순으로 정렬되어 있는 자연수 배열들을 입력받아 전체 요소 중 k번째 요소를 리턴해야 합니다.보호되어 있는 글입니다.
2023.03.14 -
tiling 문제 세로 길이 2, 가로 길이 n인 2 x n 보드가 있습니다. 2 x 1 크기의 타일을 가지고 이 보드를 채우는 모든 경우의 수를 리턴해야 합니다. 입력 인자 1 : n number 타입의 1 이상의 자연수 출력 number 타입을 리턴해야 합니다. 주의사항 타일을 가로, 세로 어느 방향으로 놓아도 상관없습니다. (입출력 예시 참고) 입출력 예시 let output = tiling(2); console.log(output); // --> 2 output = tiling(4); console.log(output); // --> 5 /* 2 x 4 보드에 타일을 놓는 방법은 5가지 각 타일을 a, b, c, d로 구분 2 | a b c d 1 | a b c d ------------ 2 | ..
세로 길이 2, 가로 길이 n인 2 x n 보드가 있습니다. 2 x 1 크기의 타일을 가지고 이 보드를 채우는 모든 경우의 수를 리턴해야 합니다.tiling 문제 세로 길이 2, 가로 길이 n인 2 x n 보드가 있습니다. 2 x 1 크기의 타일을 가지고 이 보드를 채우는 모든 경우의 수를 리턴해야 합니다. 입력 인자 1 : n number 타입의 1 이상의 자연수 출력 number 타입을 리턴해야 합니다. 주의사항 타일을 가로, 세로 어느 방향으로 놓아도 상관없습니다. (입출력 예시 참고) 입출력 예시 let output = tiling(2); console.log(output); // --> 2 output = tiling(4); console.log(output); // --> 5 /* 2 x 4 보드에 타일을 놓는 방법은 5가지 각 타일을 a, b, c, d로 구분 2 | a b c d 1 | a b c d ------------ 2 | ..
2023.02.24 -
isSubsetOf 문제 두 개의 배열(base, sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴해야 합니다. 입력 인자 1 : base number 타입을 요소로 갖는 임의의 배열 base.length는 100 이하 인자 2 : sample number 타입을 요소로 갖는 임의의 배열 sample.length는 100 이하 출력 boolean 타입을 리턴해야 합니다. 주의사항 base, sample 내에 중복되는 요소는 없다고 가정합니다. 입출력 예시 let base = [1, 2, 3, 4, 5]; let sample = [1, 3]; let output = isSubsetOf(base, sample); console.log(output); // --> true sample..
두 개의 배열(base, sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴해야 합니다.isSubsetOf 문제 두 개의 배열(base, sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴해야 합니다. 입력 인자 1 : base number 타입을 요소로 갖는 임의의 배열 base.length는 100 이하 인자 2 : sample number 타입을 요소로 갖는 임의의 배열 sample.length는 100 이하 출력 boolean 타입을 리턴해야 합니다. 주의사항 base, sample 내에 중복되는 요소는 없다고 가정합니다. 입출력 예시 let base = [1, 2, 3, 4, 5]; let sample = [1, 3]; let output = isSubsetOf(base, sample); console.log(output); // --> true sample..
2023.02.22 -
bubbleSort 문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 버블 정렬(bubble sort)은 여러 정렬 알고리즘(삽입 정렬, 퀵 정렬, 병합 정렬, 기수 정렬 등) 중 가장 기본적인 알고리즘입니다. 버블 정렬 알고리즘은 아래와 같습니다. 첫 번째 요소가 두 번째 요소보다 크면, 두 요소의 위치를 바꿉니다. (swap) 두 번째 요소와 세 번째 요소보다 크면, 두 요소의 위치를 바꿉니다. (swap) 1, 2를 마지막까지 반복합니다. (마지막에서 두 번째 요소와 마지막 요소를 비교) 1~3의 과정을 한 번 거치게 되면, 가장 큰 요소가 배열의 마지막으로 밀려납니다. 1~3의 과정을 첫 요소부터 다시 반복합니다. 5를 통해 두 번째로 큰 요소가 배열의 마지막 바로 ..
정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 버블 정렬(bubble sort)bubbleSort 문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 버블 정렬(bubble sort)은 여러 정렬 알고리즘(삽입 정렬, 퀵 정렬, 병합 정렬, 기수 정렬 등) 중 가장 기본적인 알고리즘입니다. 버블 정렬 알고리즘은 아래와 같습니다. 첫 번째 요소가 두 번째 요소보다 크면, 두 요소의 위치를 바꿉니다. (swap) 두 번째 요소와 세 번째 요소보다 크면, 두 요소의 위치를 바꿉니다. (swap) 1, 2를 마지막까지 반복합니다. (마지막에서 두 번째 요소와 마지막 요소를 비교) 1~3의 과정을 한 번 거치게 되면, 가장 큰 요소가 배열의 마지막으로 밀려납니다. 1~3의 과정을 첫 요소부터 다시 반복합니다. 5를 통해 두 번째로 큰 요소가 배열의 마지막 바로 ..
2023.02.20