개발
-
[Kotlin - Basic Types] Character, Booleans, ArraysSoftware/Kotlin : 코틀린 2019. 12. 17. 00:23
Characters Characters는 Char 자료형으로 표현된다. Characters는 숫자로 직접 취급될 수 없다. fun check(c: Char) { if (c == 1) { // ERROR: incompatible types // ... } }여기서 Characters는 문자 그대로 '1'을 의미한다. 만약 특수 문자의 경우 ''을 사용해서 나타낼 수 있다. (\t, \b, \n, \r, ', ", \ and $) 다른 문자 인코딩을 위해서는 Unicode의 escape 시퀀스 구문을 사용해야 한다: 'uFF00' Booleans Booleans는 "true" 와 "false" 두 가지 값만 가지며 booleans로 표시한다. 아래와 같은 내..
-
동적 프로그래밍 (Dynamic Programming)Software/Algorithm : 알고리즘 2018. 9. 17. 23:50
사용 조건 작은 문제의 최적 솔루션이 그 보다 더 큰 문제의 최적 솔루션에 포함되는 경우 재귀적인 방법으로 구현 시 중복 호출로 인한 큰 비용/비효율이 발생하는 경우 피보나치 수열 피보나치 수열은 동적 프로그래밍의 사용 동기와 조건, 구현을 가장 쉽고 명료하게 확인할 수 있는 예제. fn = fn-1 + fn-2 (n >= 3) f1 = f2 = 1 (n = 1, 2) 재귀호출 방식 의사 코드 (Pseudo-code) Fibonacci(n) { if (n = 1 or n = 2) then return 1; else return Fibonacci(n - 1) + Fibonacci(n - 2); } 구현 (Implement) // Not to use dynamic programming.. int fibona..
-
시퀀스 다이어그램 [Sequence Diagram]Software/UML 2018. 9. 10. 23:04
Sequence Diagram 이란? 문제 해결을 위한 객체를 정의하고 객체간의 상호작용 메시지 시퀀스를 시간의 흐름에 따라 나타내는 다이어그램(Diagram) 구성 요소 - 활성 객체 시스템의 행위자 혹은 시스템 내의 유효한 객체 라이프라인(Life line)을 가진다. 라이프라인 라이프라인은 상호작용에 참여하는 오브젝트를 의미 그림 1. Object와 Life line - 메시지 (Message) 서로 다른 객체간의 상호작용 혹은 의사소통 통신을 정의하는 요소. 하나의 객체 라이프라인으로 부터 다른 객체 라이프라인까지 선+화살표로 표시되며 메시지는 그 선의 위에 표시 그림 2. 메시지 (Message) 메시지 유형 유형의미동기 메시지(Synchronous message)메시지 전송 객체가 계속하기 전..
-
[ImageView] ScaleType: Matrix (예제)Software/Android : 안드로이드 2018. 8. 20. 23:41
예제: 이제 실제 코드를 통해서 Matrix의 Scalling, Rotation, Translation 등을 살펴보도록 하자. 예제에 앞서 일반적으로 Scaling -> Rotation -> Translation 순으로 연산 한다는 것을 기억하자. 연산의 순서가 달라지면 실제 연산 결과 값이 달라 질수 있기에 연산 순서에 꼭 신경 쓰도록 하자. 목표 300 * 200 이미지를 3배로 Scaling하고 90도로 회전 시킨 후 Center crop하여 500 * 500 ImageView에 보이도록 한다. scaleType 설정 Layout xml에서 ImageView에서 scaleType을 matrix로 설정. 이 경우 ImageView의 사이즈 보다 Image의 사이즈가 작기 때문에 ImageView의 하..
-
[SQLite] 관계형 데이터베이스Software/SQLite 2017. 9. 2. 17:35
관계형 데이터베이스의 장점 데이터의 중복성과 종속성을 최소화 여러 테이블에 데이터를 나누어 저장 테이블 간의 관계를 통해 원하는 정보를 조회 관계형 데이터베이스의 설계 원칙 중복을 최소화 : 데이터 중복성(redundancy)과 일관되지 않는 데이터 종속성(dependency) 제거 규칙에 따라 테이블 설계 테이블 간 관계는 공통된 값을 통해 서로 연결 - 기본키(Primary Key) 관계형 데이터베이스 실제 예시 현재 'cars' table에는 자동차 이름과 가격, 그리고 해당 자동차의 브랜드 이름이 각각의 Column으로서 존재하고 있다. 문제는 자동차 브랜드의 이름이 바뀌거나 기업 합병등을 통해 해당 자동차의 브랜드가 바껴 버리는 경우 자동차의 이름과 가격은 그대로지만 브랜드를 바꾸기 위해 해당 ..
-
[SQLite] 그룹화Software/SQLite 2017. 8. 21. 01:56
데이터 그룹화 만약 현재 등록된 차량들의 수를 각 브랜드 별로 나타낸다고 했을 때 WHERE절을 이용하여 결과값을 도출하고자 한다면 브랜드의 수만큼 질의를 만들어야 할 수밖에 없다. 예) SELECT count(*) FROM cars WHERE brand = 'BMW'; 그러나 GROUP BY를 사용하면 이런 문제를 매우 간단하게 해결 가능하다. GROUP BY 뒤에 그룹화 시킬 column 명을 적어 주면 해당 column별로 그룹화를 시킨 결과값을 반환한다. 아래의 그 예를 보면 더욱 더 쉽게 이해가 가능하다. sqlite> SELECT brand, count(*) FROM cars GROUP BY brand; brand count(*) ---------- ---------- Audi 1 BMW 2 ..
-
[SQLite] 내장함수 - 2Software/SQLite 2017. 8. 20. 02:33
SQLite3의 경우 기본 자료형인 문자열(Text), 정수(Integer) 나 실수(Real) 형태로 날짜/시간 값을 저장한다. 함수 내용 data(시간표현, 옵션, ...) "YYYY-MM-DD" 형식 (Y: 년, M: 월, D: 일) 반환 time(시간표현, 옵션, ...) "HH:MM:SS" 형식 (H: 시, M: 분, S: 초) 반환 datetime(시간표현, 옵션, ...) "YYYY-MM-DD HH:MM:SS" 형식 (년, 월, 일, 시, 분, 초) 반환 julianday(시간표현, 옵션, ...) 율리우스력의 기원전 4713년 1월 1일 월요일 정오를 기점으로 계산한 날짜 수 반환 strftime('포맷', 시간표현, 옵션) 시간 표현을 지정한 포맷으로 설정한 값을 반환 시간표현 YYYY-..
-
[SQLite] 내장 함수 - 1Software/SQLite 2017. 8. 14. 00:48
SQLite3는 기본적으로 문자열 조작, 수치 계산, 집계, 날짜/시간 계산, 시스템 함수 등 다양한 내장 함수를 제공한다. 함수 내용 lower(x) 문자열 x를 소문자로 변경 upper(x) 문자열 x를 대문자로 변경 length(x) 문자열 x의 길이를 반환 trim(x, y) 문자열 x의 양 끝에서 y를 제거한 결과를 반환 ltrim(x, y) 문자열 x의 왼쪽 끝에서 y를 제거한 결과를 반환 rtrim(x, y) 문자열 x의 오른쪽 끝에서 y를 제거한 결과를 반환 substr(x, y, z) 문자열 x의 y번째 위치로 부터 z개 만큼의 부분 문자열을 반환 replace(x, y, z) 문자열 x 중에서 y와 일치하는 문자열을 z로 교체 - lower, upper 함수의 경우 아스키(ASCII) ..