인덱스 4

Flutter로 간단한 노트 앱을 만들어보자 ② - 하단 네비게이션 바 구현

지난 글에서 Provider 패키지를 이용해 노트를 쓰고 저장하고, 목록을 조회하는 간단한 노트 앱을 만들었습니다. 하지만 노트를 쓰고 '노트 조회' 화면으로 이동하면 다시 '노트 쓰기' 화면으로 돌아갈 수 없었죠. 이번 글에서는 하단 네비게이션 바를 추가하여, '노트 쓰기', '노트 조회', '설정' 화면을 언제든지 이동할 수 있도록 구현해 보겠습니다. 아래 이미지는 네비게이션 바를 추가한 결과 화면입니다.    이런 네비게이션 바를 어떻게 만들 수 있는지, 구현 과정을 하나씩 살펴보겠습니다.   1. 하단 네비게이션 바 컴포넌트 구성네비게이션 바는 앱의 공통 UI 요소이므로 어느 하나의 view 에 속하지 않고. lib/components/bottom_navbar.dart 파일에 별도의 컴포넌트로 정..

데이터베이스에서 인덱스는 왜 사용하는 걸까?

인덱스란? 인덱스는 데이터베이스에서 테이블의 검색 성능을 높여주는 방법입니다. 관계형 데이터베이스에서는 B+Tree구조로 된 index를 사용하여 검색 속도를 향상시킵니다. 특히 select ~ where 쿼리처럼 특정 데이터를 찾을 때 빠른 속도로 검색할 수 있게 해 줍니다. 인덱스의 구조 인덱스는 Btree, B+tree(대부분), Hash, Bitmap로 구현할 수 있습니다. 인덱스를 생성하면 특정 컬럼(속성)의 값을 기준으로 정렬하여 데이터의 물리적 위치 주소와 함께 별도 파일에 저장합니다. 이때 특정 컬럼을 'search-key'라고 하고 실제 데이터의 물리적 위치 값을 'pointer'라고 합니다. 보통 인덱스는 테이블 크기의 10% 정도의 저장 공간을 차지합니다. 인덱스를 사용하는 이유 테이..

같은 숫자는 싫어, 그리고 깨달은 세 가지

문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1]을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한 사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 ..

시저 암호

문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한 사항 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. 해결 방법 1. s문자열을 반복하여 나눈다. 2. 문자중에 대문자와 소문자가 있는 확인 후 분기한다. 3. 알파벳 인덱스를 확인하고 거기에 n을 더하고 알파벨 전체 길이를 뺀다. 4. ..