[Algorithm] 점화식 점근적 접근 방식(반복 대치, 추정 후 증명)
·
공부/Algorithm
점화식을 푸는 방법 중에서 반복 대치와 추정 후 증명에 대해 공부해보려 한다. 반복 대치 추정 후 증명 반복 대치 점화식을 잘게 쪼개어서 푸는 방법이다. (1) T(n) = T(n-1) + n 이라는 점화식이 있다고 하자. ( T(1) = 1 ) n에 n-1을 넣으면 T(n-1) = T(n-2) + n-1이 된다. 그럼 1번 점화식의 우변에 존재하는 T(n-1)에 그대로 대입하면 (2) T(n) = T(n-2)+ n + (n-1)이 된다. 원래 1번 점화식의 n에 n-2를 넣으면 T(n-2) = T(n-3) + n-2가 된다. 이를 2번 점화식의 우변에 존재하는 T(n-2)에 그대로 대입하면 (3) T(n) = T(n-3) + n +(n-1) + (n-2)가 된다. T(1)을 알고 있고 T(1)이 나올때..
[Algorithm] 없는 숫자 찾기
·
공부/Algorithm
1부터 n까지의 수 집합이 존재한다. 이 중에서 하나의 수만 제외하고 n-1개의 수 집합 중에서 서로 다른 숫자 n-1개를 입력받는다. 여기서 존재하지 않는 숫자는 무엇인가? ex) n=5 이고 {1,2,4,5} 입력받았다면 답은 "3"이다. 입력 : 5 1 2 4 5 출력 : 3 크게 두 가지 방법이 존재한다. 배열 사용 첫 번째는 넉넉한 크기의 배열을 만든 다음에 모두 0을 저장한다. 그리고 수를 입력받으면 그 값을 인덱스로 사용하여 배열 해당 인덱스의 값을 1로 저장한다. 다 입력받고 나면 0이 들어있는 인덱스를 찾으면 끝이다. 위의 예시에서는 수를 전부 입력받으면 아래와 같은 모습이 된다. index 0 1 2 3 4 5 value 0 1 1 0 1 1 0번 인덱스의 값은 사용하지 않고 1번 인덱..
[Database] 트랜잭션(transactioin) 개념과 동시성의 중요성
·
공부/Database
동시성을 다룰 때 크게는interleaved : 교대로 수행하면서 동시에 수행하는 것처럼 보이게 함parallel : 실제로 동시에 수행두 개로 나뉜다. 데이터베이스에서 동시성을 다룰 때는 대부분 1번 방식을 사용한다. 트랜잭션트랜잭션의 뜻은 데이터베이스에서 어떠한 일이 수행되는 논리적 최소 단위이다. 하나의 트랜잭션에는 데이터베이스 연산이 여러 개 들어갈 수 있다. ex) 삽입, 삭제, 수정 트랜잭션을 사용하면 데이터의 일관성과 무결성을 보장할 수 있다. 트랜잭션 연산트랜잭션 연산에 앞서 디스크 속 블록을 읽고 쓰는 과정을 알면 이해가 쉽다.https://growth-coder.tistory.com/12  read-item(x)x가 존재하는 디스크 블록을 찾는다.디스크 블록을 메인메모리 버퍼 영역으로 ..
[Database] Index structures (multi-level oredered) B-tree와 B+ tree
·
공부/Database
fanout : 노드에서 갈라지는 서브 트리의 개수 이진 트리는 fo(fanout)이 2이고 사진 트리는 fo가 4이다. 만약 bfri(블록당 인덱스 엔트리의 개수)를 fanout으로 지정한다면 속도가 빨라진다. 인덱스 블록의 개수가 n이라고 한다면 첫 번째 레벨 블록은 n이고 두 번째 레벨 블록은 n/fo 에서 소수점을 버린 값이다. 레벨이 올라갈수록 fo로 계속 나누어주면 된다. 이를 ISAM 방식이라고 한다. B-tree search tree의 문제점은 한쪽의 균형이 깨질수도 있다는 점이다. 오른쪽이나 왼쪽으로 치우칠 경우 트리의 장점인 이진 탐색을 제대로 사용하지 못할 것이다. 그래서 이러한 균형을 계속 유지해주는 것이 중요한데 이러한 트리를 B-tree 라고 한다. 다음과 같은 3차 B-tree..
[Android Studio] fragment 사용법 3 (bottom navigation)
·
공부/Android Studio
오늘은 bottom navigation을 사용하여 fragment를 교체하는 방법에 대해 공부해보려 한다. 이전 포스팅과 동일하게 main activity에 NavHostFragment를 넣는 것 부터 시작한다. 이 부분은 간략하게 작성할 예정이니 자세한 설명은 이전 포스팅을 참고하는 것이 좋을 듯 하다. https://growth-coder.tistory.com/19 똑같이 navigation resource file을 만들고 생성한 후 추가하라는 dependency를 추가한다. 그렇게 만들어진 xml 파일에서 fragment들을 생성한다. 나는 first, second, third라는 텍스트뷰가 있는 fragment 3개를 만들었다. 이전 포스팅과는 다르게 fragment간의 갈 수 있는 경로를 설정..
[Android Studio/Kotlin] fragment 사용법 2 (Action bar 뒤로가기)
·
공부/Android Studio
이전 포스팅에서 fragment를 교체하는 방법에 대해서 공부하였다. 이전 포스팅에서는 이전 fragment로 돌아가기 위해서는 스마트폰의 뒤로가기 버튼을 눌렀어야 했다. 이제는 상단에 뒤로가기 버튼을 만들어서 뒤로갈 수 있게끔 해보려 한다. 이를 위해서 ActionBar를 설정해야한다. 그 전에 메인 액티비티의 프래그먼트 화면에 접근해야 하므로 container라는 아이디를 주었다. 이제 메인 액티비티에 binding을 설정하고 onCreate 함수에 다음 코드 한 줄을 추가하면 액션 바가 만들어진다. setupActionBarWithNavController(binding.container.getFragment().navController) 그리고 액션 바의 뒤로가기 버튼을 클릭했을 때 뒤로 갈 수 있..