Til

👨🏻‍💻 Development/𝐀 Algorithm

2021년 09월 10일 TIL - 이진 탐색

변별력 있는 탐색 문제에서 이진 탐색이 자주 출몰한다. 이진 탐색이란 우선! 정렬된 리스트에서 사용 가능하다. 탐색 범위를 반으로 줄여나가면서 데이터를 빠르게 탐색 한다. 3가지 변수가 사용됨 : 시작점, 끝점, 중간점 직접 구현 public class Solution { public int binarySearch(int[] arr, int target) { int first = 0; // 시작점 int last = arr.length - 1; // 끝점 int mid; // 중간점 while (first

👨🏻‍💻 Development/💾 Database

2021년 09월 09일 TIL - Database Transaction Isolation Level

Transaction Isolation Level Transaction이란 데이터베이스에서 하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합을 트랜잭션이라고 한다. 트랜잭션은 A.C.I.D 성질이라고 하는 다음의 네 가지 성질로 설명된다. Atomicity 트랜잭션의 모든 연산들이 정상적으로 수행 완료되거나 아니면 전혀 어떠한 연산도 수행되지 않은 상태를 보장 (0 or 1) Consistency 고립된 트랜잭션의 수행이 데이터베이스의 일관성을 보존 랜잭션 수행 전후의 데이터베이스 상태는 각각 일관성이 보장되는 서로 다른 상태 Isolation 여러 트랜잭션이 동시에 수행되더라도 각각의 트랜잭션은 다른 트랜잭션의 수행에 영향을 받지 않고 독립적으로 수행되어야 한다. Durability 트랜잭션이 ..

👨🏻‍💻 Development/𝐀 Algorithm

2021년 09월 08일 TIL - Heap (Java)

Heap 우선 순위 큐를 하다가 Heap 구조를 사용한다는 것을 보았는데 Heap 자료구조란 무엇일까? 힙은 일종의 BinaryTree 이며 수의 집합에서 가장 작은 수나 가장 큰 수만을 자주 꺼내올 때 유용한 자료구조 가장 큰 / 작은 수 가져올때 시간 복잡도 : O(log N) 예: 최소 힙 구현 규칙이 있다. 루트는 가장 작은 값이여야 함. 자식은 자신보다 크기만 하면됨. 완전 이진 트리의 규칙을 그대로 적용 힙을 배열 형태로 구현 왼쪽 자식은 (자신의 인덱스 * 2) 오른쪽 자식은 (자신의 인덱스 * 2 + 1) 자신의 부모는 (자신의 인덱스 / 2) Heap 정의 public class Heap { public static final int MAX_N = 10001; public int[] ar..

👨🏻‍💻 Development/☕️ Java

2021년 09월 07일 TIL - 의존 역전 원칙 (Java)

높은 수준의 모듈? 낮은 수준의 모듈? 이해가 안되어서 TIL에 정리하고자 한다. Dependency Inversion Principle (의존관계 역전) 높은 수준의 모듈은 낮은 수준의 모듈에 의존하지 않아야 한다. 두 모듈 모두 추상화에 의존해야 한다. 추상화는 세부 사항에 의존하지 않아야 한다. 세부 사항은 추상화에 의존해야 한다. 예시 만일 우리가 MySQL 데이터베이스 사용하는 자바 어플리케이션을 만든다고 해보자. 그래서 (높은 수준) Java Application에서 (낮은 수준)MySQL ODBC Driver class를 이용해 작업하고 있다. // Java Application public class Main { public static void main(String[] args) { My..

👨🏻‍💻 Development/𝐀 Algorithm

2021년 09월 06일 TIL - 2차원 배열 돌리기( N * M)

가끔씩 삼성 A형 문제라던가 구현, 시뮬레이션 문제들 보면 배열을 자주 돌린다. (회전 회오리) 그래서 이번 기회에 기강을 다져보기로 했다. (그저 기록이지만) 코딩테스트 치기전에 한 번 보면 좋겠다 미래의 나 class Map { int[][] map; public Map(int[][] map) { this.map = map; } public void rotate() { // 90도 회전 int rows = map.length; int cols = map[0].length; int[][] newMap = new int[cols][rows]; for(int i = 0 ; i < rows ; i++) { for(int j = 0 ; j < cols ; j++) { newMap[j][rows - i - 1]..

👨🏻‍💻 Development/𝐀 Algorithm

2021년 09월 06일 TIL - 다익스트라 알고리즘 (Java)

프로그래머스 [가장 먼 노드] 문제를 풀면서 dfs로 해도 되겠지만, 많이 못 써봤던 다익스트라 알고리즘을 사용하면 어떨까 해서 사용해봤는데, 다익스트라 알고리즘에서도 힙 구조를 사용하면 더 효율적으로 사용할 수 있다는 내용이 있어서 한 번 써보았는데 괜찮아져서 TIL에 기록하고 싶다. 다익스트라 알고리즘? 다익스트라 알고리즘은 DP (그 D.P가 아니다) 을 활용한 대표적인 최단 경로 탐색 알고리즘이다. 왜 다이나믹 프로그래밍의 종류이냐? 하나의 최단 거리를 구할 때 그 이전까지 구했던 최단 거리 정보를 그대로 사용한다는 특징때문이다. 대부분 이차원 배열을 사용하여 선형 탐색을 하는데, 이렇게 작성하면 시간 복잡도가 O(N^2)으로 형성된다. 이를 개선하기 위해 우선 순위 큐의 힙 구조를 활용하여 시간..

🏃🏻 Daily

2021년 08월 11~15일 TIL

1. 느낀점 W2 & SQL Study Transaction, Stored Procedure, stored function 등 처음보는 기능들이 많았고 따로 정리해야할 필요가 있을 것 같다. SQL Level UP Study : 생각보다 어렵다... ㅠㅠ 그래도 이해는 다 되긴해서 다 읽고 도서관에서 SQL Startup 도 시작하면 좋을 것 같다. 실전 자바 소프트웨어 개발 책스터디 진행 OCP, SRP, DIP 등 예시를 통해 조금더 깊숙히 알 수 있어서 좋았고 스터디를 진행하고 어떤점이 더 공부가 필요한지에 대해 알 수 있어서 좋았다. (github 참고) ---- - 이번주 TIL은 관리를 잘 못했다. - Notion으로 TIL쓰는데 여기는 느낀점만 정리하다보니 많이 번거롭다. - 그래서 Noti..

🏃🏻 Daily

2021년 08월 06일 TIL

1. 오늘 한 일 ✅ W1D5 - 실습프로젝트 ✅ 팀 스터디(팀자체 스터디 계획) 진행에 대해 논의 ✅ 백둥이타임 2. 느낀점 W1D5 객체지향 프로그래밍을 통한 JAVA 숫자야구게임 만들기 만드는 과정을 따라하면서 이렇게 생각하면서 만들기까지 강사분이 얼마나 많은 노력과 숙련도를 쌓아오셨는지 알수 있었다. 유명한 아티스트들도 처음엔 여러가지 음악들을 따라 만들고 많은 믹스테잎을 만들면서 성장했다. 많은 연습이 필요할 것 같다. Depdendecny Lombok이 정말 편리한 도구이다. 나중에 따로 정리해봐야겠다. Sketch Tool excalidraw라는 툴을 써서 스케치를 하니 모양도 이쁘고 잘 정리가 된다. 자주 써야겠다. 교육중에 코어타임때 불이 안켜져있거나 반응을 안하는 사람이 종종있나보다. ..

황일용
'Til' 태그의 글 목록 (2 Page)