[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기
반응형

💻 CS 193

[알고리즘 연습] 0 이동시키기

0 이동시키기 0과 양수가 섞여있는 배열이 존재한다. 해당 배열의 0들을 전부 뒷쪽으로 옮겨 [양의정수들, 0들] 형태로 나타나야 한다. 풀이 def moveZerosToEnd(nums): currentPosition = 0 for i in range(len(nums)): if nums[i] != 0: temp = nums[currentPosition] nums[currentPosition] = nums[i] nums[i] = temp currentPosition += 1 return nums 단순히 생각해보면 리스트 2개를 만들고, 각각 양수와 0을 담아 마지막에 합칠 수 있다. 하지만 그런 방법은 공간복잡도 측면에서 비효율적이다. 따라서 해당 배열 자체를 수정하는 방법을 생각해보았다. 현재 i 인덱스..

[알고리즘 연습] 주어진 숫자를 1로 만들기 위한 최소 횟수 구하기

주어진 숫자를 1로 만들기 위한 최소 횟수 구하기 int형의 숫자 num이 주어졌을 때 해당 num을 한정된 연산을 이용해 최대한 적은 연산 횟수로 1을 만들어야 한다. 가장 적은 케이스의 횟수를 구하라. 할 수 있는 연산은 3으로 나누기, 2로 나누기, 1 빼기 총 세가지이다. 풀이 def convertTo1(num): now = 1 tries = 0 check = [0 for _ in range(1,num + 1)] for i in range(0,num): tries = check[i] now_num = i + 1 plus_one_index = now_num + 1 - 1 mul_two_index = now_num * 2 - 1 mul_three_index = now_num * 3 - 1 if (pl..

[알고리즘 연습] 배열에서 타겟과 일치하는 수 2개 찾기

배열에서 타겟과 일치하는 수 2개 찾기 int형 배열과 int형 타겟수이 주어진다. 배열에는 중복되는 수가 없다. 두 수를 합쳐서 타겟수이 되는 두 수가 반드시 배열에 존재한다. 풀이 def twoSum(nums, target): nums.sort() i = 0 j = len(nums) - 1 while i target: j -= 1 elif sum < target: i += 1 return a,b sort를 진행해 배열을 순서대로 만든다. (시간복잡도 O(N logN)) 그리고 양끝에 인덱스를 하나씩 두고 두 수의 합이 너무 크면 끝 인덱스를 줄이고, 두 수..

[알고리즘 연습] 약수 구하기 효율화 (by Python)

약수 효율적으로 구하기 1 이상의 자연수 n을 받았을 때 해당 수의 약수들을 구하라. 약수들은 리스트 형태로 숫자 크기 순서대로 출력하라. 단순 풀이 def get_divisor(n): n = int(n) divisors = [] for i in range(1, n + 1): if (n % i == 0): divisors.append(i) return divisors 가장 단순한 방법은 for문을 돌면서 하나씩 약수인지 체크(n % i == 0)하여 해당 값을 약수 리스트에 넣어주는 것이다. O(N)의 시간복잡도를 가진다. 효율화 풀이 def get_divisor(n): n = int(n) divisors = [] divisors_back = [] for i in range(1, int(n**(1/2))..

SQLite - 기본함수

SQL 기본함수 x || y : 문자열 x와 y를 연결한다. LENGTH / SUBSTR(x, n, m) / TRIM(x, y) / LTRIM() / RTRIM() / UPPER() / LOWER() / REPLACE(x,y,z) 값이 숫자형이라면 사칙연산 및 나머지연산, ABS(), ROUND(x,n) 등의 처리도 가능하다. DATE('now'), TIME('now')를 통해 현재 날짜와 시각을 알 수 있다. STRFTIME(, 'now')을 사용해 FORMAT에 %d,%m,%Y,%w 등을 넣어 일,월,연도,요일 등을 알 수 있다. SQL 집계함수 SELECT COUNT(DISTINCT Continent) FROM Country; SELECT MIN(Population), MAX(Population) ..

SQLite - DB 생성과 변경

데이터베이스의 생성 CREATE DATABASE [DB이름] SHOW TABLES DROP DATABASE [DB이름] 비 SQLite와 SQLite 사이의 방법이 다르다. SQLite는 GUI 인터페이스를 조작해서 새로운 데이터베이스를 만들고, 패널에 불러오고, 연결하고, 연결을 끊는다. 비 SQL에서는 CREATE DATABASE [DB이름]으로 데이터베이스를 만든다. USE [DB이름] 으로 연결한다. SHOW TABLES 로 테이블 목록을 출력한다. DROP DATABASE [DB이름] 으로 데이터 베이스를 삭제한다. 테이블의 정의 및 생성 CREATE TABLE test (id INTEGER, name VARCHAR(255), address VARCHAR(255), city VARCHAR(255..

SQLite - 기초문법

CRUD? 데이터베이스의 기초 기능 Create, Read, Update, Delete 로 구성 데이터베이스 구조 하나의 데이터 베이스에 여러개의 &#39;테이블&#39;이 저장되어 있는 형태이다. 여러 종류의 데이터를 한 테이블에 통합해놓으면 중복하는 정보가 많아질 수 있기 때문에 여러 테이블로 분산하여 저장한다. 여러개의 테이블로 분산해놓고 일정 데이터값(이름, ID 등)을 통해 각 테이블 접속(연결)이 가능하다. SQL (Structured Query Language): SQLiteStudio SQLiteStudio는 사용하기 쉬운 SQL 개발환경이다. https://sqlitestudio.pl/ 설치과정없이 압축을 풀고 바로 사용가능 SQL 기초문법 : CREATE CREATE TABLE [테이블..

DB와 SQL

데이터베이스? 1950년대 미군이 처음 구축했다. 일정 구조에 따라 편성된 데이터의 집합이며, 여러 사용자의 요구에 따라 데이터를 저장하고 내보낸다. 구조적 특징 : 통합성(데이터가 중복되지 않음), 저장성(저장매체에 저장), 공용성(다양한 목적으로 이용가능), 변화성(데이터 삽입 및 삭제, 변경 가능) 데이터베이스 종류 계층형 DB : 트리 구조를 활용해 계층적으로 구조 정의 네트워크형 DB : 그래프 구조를 활용해 구조 정의 관계형 DB : 계층형과 네트워크형의 복잡한 구조를 단순화시킨 모델. 단순한 표를 활용해 구조를 정의한다. 객체지향형 DB : 객체의 개념을 도입해 멀티미디어같은 복잡한 데이터를 효과적으로 표현할 수 있도록 했다. SQL IBM 연구소에서 개발한 SEQUEL에서 유래함 관계형 데..

[자료구조] TRIE IDEA

본 게시글은 대학생이 수업을 듣고 내용을 정리한 것입니다. 따라서 완벽하지 않은 부분이 있을 수 있습니다. 아울러 본 게시글에 포함된 코드들은 대략적인 개념 이해만을 위해 작성된 것으로 완전하지 않은 코드임을 알려드립니다. Huffman Coding 등장 빈도에 따라 압축한다. 등장빈도가 큰 것은 짧게, 등장빈도가 작은 것은 길게 표현한다. 노드들을 리프 위치에 등장빈도 순으로 일렬로 정렬하고, 등장빈도가 작은 것부터 둘 씩 묶는다. 묶인 것은 합을 표현한다. 그렇게 트리가 완성되면 왼쪽은 0, 오른쪽은 1로 엣지에 표기한다. root부터 각 노드에 도달할 때까지의 엣지 코드가 최종 허프만 코드가 된다. 이는 랜덤한 경우에 더 유용하다. 연속된 문자가 많을 경우 각각을 8a와 같은 식으로 압축하는 것이 ..

[운영체제] RAID

RAID (Redundant Array of Independent Disks) 디스크 배열을 사용하는 대용량 저장장치 프로세서 속도, 메인 메모리 크기, 2차 저장소 등의 크기는 급속도로 발전했지만 입출력 전송률은 그렇지 못하여 요구하는 속도를 만족시킬 수 없다는 점에서 착안했다. 여러 디스크를 동시에 접근할 수 있는 디스크 배열로 입출력 처리량, 전송률을 개선한다. RAID에서 I는 원래는 Inexpensive라는 의미였지만 이 후 많은 RAID 시스템에서 값이 비싼 고성능 디스크를 사용하게 되면서 Independent로 수정되었다. 디스크 배열은 &#39;데이터 스트라이핑&#39;으로 병렬성을 이뤄 성능을 개선시킬 뿐 아니라, &#39;중복성&#39;으로 신뢰성도 향상시켜준다. 데이터 스트라이핑, 중..

반응형