전체 글
-
[프로그래머스] 바탕화면 정리 c++Coding Test/programmers 2023. 3. 11. 16:24
문제 설명 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 (0, 0)으로 시작해 (세로 좌표, 가로 좌표)로 표현합니다. 빈칸은 ".", 파일이 있는 칸은 "#"의 값을 가집니다. 드래그를 하면 파일들을 선택할 수 있고, 선택된 파일들을 삭제할 수 있습니다. 머쓱이는 최소한의 이동거리를 갖는 한 번의 드래그로 모든 파일을 선택해서 한 번에 지우려고 하며 드래그로 파일들을 선택하는 방법은 다음과 같습니다. 드래그는 바탕화면의 격자점 S(lux, luy)를 마우스 왼쪽 버튼으로 클릭한 상태로 격자점 E(rdx, rdy)로 이동한 뒤 마우..
-
[프로그래머스] 대충 만든 자판 c++Coding Test/programmers 2023. 3. 6. 23:42
문제 설명 휴대폰의 자판은 컴퓨터 키보드 자판과는 다르게 하나의 키에 여러 개의 문자가 할당될 수 있습니다. 키 하나에 여러 문자가 할당된 경우, 동일한 키를 연속해서 빠르게 누르면 할당된 순서대로 문자가 바뀝니다. 예를 들어, 1번 키에 "A", "B", "C" 순서대로 문자가 할당되어 있다면 1번 키를 한 번 누르면 "A", 두 번 누르면 "B", 세 번 누르면 "C"가 되는 식입니다. 같은 규칙을 적용해 아무렇게나 만든 휴대폰 자판이 있습니다. 이 휴대폰 자판은 키의 개수가 1개부터 최대 100개까지 있을 수 있으며, 특정 키를 눌렀을 때 입력되는 문자들도 무작위로 배열되어 있습니다. 또, 같은 문자가 자판 전체에 여러 번 할당된 경우도 있고, 키 하나에 같은 문자가 여러 번 할당된 경우도 있습니다..
-
[Python] 기본 데이터 구조Programming/Python 2023. 3. 6. 20:07
Stack - LIFO(Last In First Out) : 나중에 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조 - list를 사용하여 스택 구조 구현 가능 push : appen() pop : pop() a = [1, 2, 3, 4, 5] a.append(10)#[1, 2, 3, 4, 5, 10] a.pop() #[1, 2, 3, 4, 5] Queue - FIFO(First In First Out) : 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조 - list를 사용하여 큐 구조 구현 가능 put : append() get : pop(0) a = [1, 2, 3, 4, 5] a.append(10)# [1, 2, 3, 4, 5] a.pop(0)# 1 Deque - stack 과 queue를..
-
[CS] GradleComputer Science/CS 2023. 3. 3. 14:15
Gradle Groovy를 이용한 빌드 자동화 시스템입니다. Groovy와 유사한 도메인 언어를 채용하였으며, 현재 안드로이드 스튜디오의 공식 빌드 시스템입니다. Java, C/C++, Python 등 다양한 언어를 지원합니다. Ant 와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스 빌드 도구입니다. (빌드 도구 : 소스코드를 실행가능한 애플리케이션 생성물을 자동으로 만드는 프로그램. 빌드 과정은 소스코드를 컴파일하고 연결하고 패키징하여 실행가능한 형태로 가공) 빌드 : 우리가 작성한 자바 코드를 비롯해 프로젝트에 쓰인 각각의 파일 및 자원(.xml, jpa, jpg, properties)등을 JVM이나 톰캣과 같은 WAS가 인식할 수 있도록 패키징하는 과정 빌..
-
[Spring Boot] Visual Studio Code - Spring boot 세팅Programming/Java 2023. 3. 3. 00:20
Spring boot를 사용하고 싶어서 처음엔 eclipse IDE를 사용하려고 했는데 무료 버전이라 무겁기도 하고 불편한감이 있어서 평소에 잘 사용하고 있는 VSCode에서 세팅하려고 합니다. VSCode는 무료 IDE에다가 다양한 언어, 프레임워크 등을 지원하는 확장성 높은 IDE입니다. 준비 1. VSCode 2. JDK 17 이상 3. JAVA 환경 변수 설정 3가지는 Spring Boot를 설치하기 앞서 세팅되어 있어야하는 항목입니다. VSCode는 JDK의 최신 버전을 요구하기 때문에 17이상을 설치해야합니다. (VSCode가 최신 버전이라면) 그렇지 않으면 에러를 내며 최신 버전을 설치하라고 합니다. vscode setting 확장 모듈 설치 Java Extension vscode exten..
-
[DB] IndexDatabase 2023. 3. 2. 19:04
Index란? Index는 데이터베이스의 테이블에 대한 검색 속도를 향상시켜주는 자료구조입니다. 테이블 내의 1개 이상의 컬럼을 이용하여 생성할 수 있습니다. 테이블의 특정 컬럼(Column)에 인덱스를 생성하면, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장됩니다. 컬럼의 값과 물리적 주소를 (Key, Value)의 한 쌍으로 저장합니다. 특정 테이블의 컬럼을 인덱싱(Indexing)하면 검색을 할 때 테이블의 레코드를 전부 다 확인하는 것이 아니라 인덱싱 되어있는 자료구조를 통해서 검색되기 때문에 검색 속도가 빨라지는 것입니다. 인덱스는 책의 목차(색인)으로 비유할 수 있습니다. 책에서 원하는 내용을 찾을 때 목차 및 색인을 이용하면 훨씬 빠르게 찾을 수 있게..
-
[자료구조] B-Tree, B*Tree, B+TreeComputer Science/Data Structure 2023. 2. 28. 23:02
B-Tree 데이터베이스와 파일 시스템에서 사용되는 트리 자료구조의 일종으로, 이진 트리가 자식 노드를 최대 2개만 가질 수 있지만 B-tree는 자식 노드의 개수가 2개 이상인 트리입니다. 또한 노드 내의 데이터가 1개 이상일 수 있습니다. 노드 내 최대 데이터 수가 2개라면 2차 B-Tree, 3개라면 3차 B-Tree 라고 합니다. 하나의 노드에 여러 정보를 담게 되고, 여러 자식을 가질 수 있게 되면서 "차수"라는 개념이 등장합니다. 최대 M개의 자식을 가질 수 있는 B-Tree를 M차 B-Tree라고 부릅니다. 이렇게 하나의 노드에 여러 자료를 배치하게 되면서 이진 트리보다 훨씬 많은 데이터를 효율적으로 저장소에 담을 수 있게 되었습니다. 하드디스크, SSD와 같은 외부 기억장치(비휘발성 메모리..
-
[자료구조] 레드-블랙 트리(Red-Black Tree)Computer Science/Data Structure 2023. 2. 27. 16:47
Red-Black Tree 자가 균형 이진 탐색 트리(self-balancing binary search tree) 로서, 대표적으로 연관 배열 등을 구현하는 데 쓰이는 자료구조입니다. 트리에 N개의 원소가 있을 때 O(log N)의 시간 복잡도를 삽입, 삭제, 검색을 할 수 있습니다. 레드-블랙 트리는 복잡한 자료구조이지만, 실 사용에서 효율적이고, 최악의 경우에도 일정한 실행 시간을 보장하여 실시간 처리와 같은 실행 시간이 중요한 경우에 유용하게 사용됩니다. 특성 Red-Black Tree는 각각의 노드가 Red, Black 두가지의 색상 속성을 가지고 있는 이진 탐색 트리입니다. 각 구성 원소는 in-order traversal(중위순회) 연산을 수행합니다. - in-order traversal(중..