'항해 중' 카테고리의 글 목록 (21 Page)
본문 바로가기

항해 중267

그래프, BFS & DFS 👀 그래프란? 👉 연결되어 있는 정점과 정점 간의 관계를 표현 할 수 있는 자료구조 저번에 트리를 배우면서 배웠던 "비선형 구조" 에 대해 기억 나시나요? 비선형 구조는 표현에 초점이 맞춰져 있다고 말씀 드렸는데, 선형구조는 자료를 저장하고 꺼내는 것에 초점이 맞춰져 있고, 비선형구조는 표현에 초점이 맞춰져 있습니다. 그래프는 바로 연결 관계에 초점이 맞춰져 있습니다. 페이스북을 예시로 들어볼게요! 제가 친구 "제니"를 알고 있고, "로제"와 친합니다. 그리고 "로제"는 트와이스 "사나"를 안다고 하면, 저는 "사나"와 2촌 관계라고 말할 수 있겠죠! 👀 그래프에서 사용되는 용어 👉 노드(Node): 연결 관계를 가진 각 데이터를 의미합니다. 정점(Vertex)이라고도 합니다 👉 간선(Edge): 노드 .. 2021. 11. 14.
힙 - 원소 추가하기, 원소 삭제하기 👀 힙이란? 👉 힙은 데이터에서 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 항상 최대의 값들이 필요한 연산을 할 때 힙을 사용합니다. 힙은 항상 큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있도록 하는 자료구조입니다. 다시 말하면 부모 노드의 값이 자식 노드의 값보다 항상 커야 합니다. 그러면 가장 큰 값은 모든 자식보다 커야 하기 때문에 가장 위로 가겠죠! 따라서 최대의 값들을 빠르게 구할 수 있게 되는 것입니다. (반대도 같은 원리입니다.) 참고로, 힙은 다음과 같이 최댓값을 맨 위로 올릴 수도 있고, 최솟값을 맨 위로 올릴수도 있습니다. 👀 최댓값 힙(Max Heap)에 원소 추가하기 👉 힙의 규칙 "힙은 항상 큰 값이 상위 레벨에 있고 .. 2021. 11. 14.
트리 - 이진 트리, 완전 이진 트리 트리라는 자료구조를 이용하면 계층 구조의 데이터를 쉽게 표현 할 수 있습니다. 👀 트리란? 👉 뿌리와 가지로 구성되어 거꾸로 세워놓은 나무처럼 보이는 계층형 비선형 자료구조입니다. (계층형 자료구조란 데이터가 트리 형태의 구조로 조직된 것) 앞에서 살펴 보았던 큐(Queue), 스택(Stack)은 자료구조에서 선형 구조라고 합니다. 👉 형태적 차이점 선형 구조란 자료를 구성하고 있는 데이터들이 순차적으로 나열시킨 형태를 의미합니다. 비선형 구조는 선형구조와는 다르게 데이터가 계층적 혹은 망으로 구성되어있습니다. 👉 용도적 차이점 선형 구조는 자료를 저장하고 꺼내는 것에 초점이 맞춰져 있고, 비선형 구조는 표현에 초점이 맞춰져 있습니다. (하나의 데이터의 밑에 밑에 어떤 데이터가 있는 지가 더 중요하다면 .. 2021. 11. 14.
알고리즘 기초 주차 - 3번 문제 풀이 방법 문제설명 배열 arr와 정수 n이 주어집니다. 배열 arr의 각 원소는 문자열로 이루어져 있습니다. 이때, 배열 arr에서 중복되는 단어는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 단어들을 반환 할 때는 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 제한사항 - strings는 길이 1 이상, 50 이상인 배열입니다. - strings의 원소는 소문자 알파벳으로 이루어져 있습니다. - strings의 원소는 1 이상, 100 이하인 문자열입니다. - 모든 strings의 원소의 길이는 n보다 큽니다. - 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치 합니다. 입출력 예 지정 입력값 문제풀이 function solution.. 2021. 11. 13.
알고리즘 기초 주차 - 2번 문제 풀이방법 문제설명 : 자연수 n의 각 자리 숫자를 뒤집은 순서로 더해 출력하는 수식을 리턴 하세요. 예를 들어 n이 12345이면 "5+4+3+2+1=15"라는 문자열을 리턴합니다. 제한사항 - N의 범위 : 100,000,000 이하의 자연수 입출력 예 지정 입력값 문제풀이 - 첫번째 문제 풀이 function solution(n){ let array = [] let total = 0 let result = '' // n을 뒤집는다 array = n.toString().split("").reverse() // 각 자릿수를 더한 합계를 구한다. for(let i = 0; i{ total += parseInt(item); (i==(array.length-1))?result+=item:result+=(item+"+".. 2021. 11. 13.
알고리즘 기초 주차 - 1번 문제 풀이 방법 문제설명 행렬이 두개 있습니다. 두 행렬의 절댓값을 차례대로 담은 정수 배열 absolutes와 행렬의 부호를 차례대로 담은 boolean 배열 sings가 매개변수로 주어집니다. 두 행렬의 부호는 같습니다. 실제 행렬 덧셈의 결과를 반환하는 함수, solution을 완성 해주세요. 제한사항 - 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 입출력 예 지정 입력값 문제 풀이 function solution(arr1, arr2, signs){ let line = [] // 행을 담을 배열 for(let i = 0; i < arr1.length; i++){ // 행 반복문 let heat = [] // 열을 담을 배열 for(let j = 0; j < arr1[i].length; j+.. 2021. 11. 13.
해쉬 - 해쉬 테이블, 해쉬 함수, 체이닝, 개방 주소법 👀 해쉬란? 👉 해쉬 알고리즘을 통해서 문자열을 고정된 길이의 데이터로 만드는 방식 (미니 프로젝트에서 비밀번호 암호화 할 때 사용한 게 해쉬였다!) 해쉬를 사용하면 블록체인이라는 기술에서도 쓰이기도 하고, 효율적인 자료구조인 딕셔너리를 만들 때도 사용 됩니다! 👀 딕셔너리란? 👉 사전형 데이터를 의미하며, key와 value를 1대1로 대응시킨 형태입니다. (참고 사이트 http://tcpschool.com/python/types_dictionary) 👀 해쉬 테이블이란? 컴퓨팅에서 키를 값에 매핑 할 수 있는 구조인, 연관 배열 추가에 사용되는 자료구조이다. 해쉬 테이블은 해쉬 함수를 사용하여 색인(index)을 버킷(bucket)이나 슬롯(slot)의 배열에 계산합니다. 데이터를 다루는 기법 중에 .. 2021. 11. 13.
스택, 큐 👀 스택과 큐란? : 스택과 큐는 들어가고 나오는 곳이 정해져 있는 자료구조입니다! 👀 스택이란? 👉 한쪽 끝으로만 자료를 넣고 뺄 수 있는 자료 구조를 말합니다. (선입후출?) 실생활적인 예시를 들어 보자면 스택이라는 자료 구조는 "빨래통"을 떠올리시면 됩니다. 데이터를 한 곳에서만 넣었다 뺄 수 있습니다. 가장 밑에 있는 빨래를 뺄 수 있나요? 아니요!! 가장 위에 있는 빨래를 빼거나 넣을 수 있습니다. 그러면 가장 처음에 넣은 빨래는? 가장 늦게 나오겠죠!! 가장 마지막에 넣은 빨래는? 가장 빨리 나옵니다!! 이런 자료 구조를 Last In First Out이라고 해서 LIFO라고 부릅니다. 👀 그렇다면 이런 자료구조는 왜 필요할까요? 👉 바로, 넣은 순서를 쌓아두고 있기 때문입니다. 그 순서가 필.. 2021. 11. 13.
정렬 - 버블정렬, 선택정렬, 삽입정렬 👀 정렬이란? 👉 데이터를 순서대로 나열하는 방법을 의미합니다. 정렬은 알고리즘의 굉장히 중요한 주제입니다. 이진탐색을 가능하게도 하고, 데이터를 조금 더 효율적으로 탐색 할 수 있게 만들어 주기 때문입니다! 다음과 같이 책이 꽂혀 있을 때, 가나다 순으로 정렬 해달라는 것을 의미합니다. 숫자로만 이루어진 배열을 오름차순으로 정렬 해보면 다음과 같습니다. [4, 6, 2, 9, 1] # 정렬되지 않은 배열 [1, 2, 4, 6, 9] # 오름차순으로 정렬된 배열! [9, 6, 4, 2, 1] # 내림차순으로 정렬된 배열! 말로 설명 해보라고 하면 생각보다 설명하기 힘들다는 걸 느낄 수 있습니다! 아래와 같이 컴퓨터에게 정렬을 시키기 위해서는 명확한 과정을 설명 해줘야 합니다. 👀 버블정렬이란? 👉 가장 .. 2021. 11. 13.
728x90