[Algorithm Strategies] 3-7. 분할 정복
·
Reference/알고리즘 문제 해결 전략
구종만님의 "프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략"을 기반으로 공부한 내용입니다. 📕 목차 1. 도입 2. 쿼드 트리 뒤집기 (문제 ID: QUADTREE, 난이도: 하) 3. 울타리 잘라내기 (문제 ID: FENCE, 난이도: 중) 4. 팬미팅 (문제 ID: FANMEETING, 난이도: 상) 1. 도입 📌 분할 정복(Devide & Conquer) 쉽게 말해, 각개 격파 전략이다. 주어진 문제를 둘 이상의 부분 문제로 나누고, 각 부분 문제의 답으로 전체 문제의 답을 계산해낸다. 부분 문제를 나눌 때는 거의 같은 크기로 나눈다. 일반적으로 3가지 과정으로 구성된다. 문제를 더 작은 문제로 분할하는 과정(devide) 각 문제에 대해 구한 답을 원래 문제의 답으로 병합하는 과정(merge..
[Effective-Java] Chapter10 #70. 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라
·
Reference/Effective-Java
📌 throwable Java는 문제 상황을 알리는 타입(throwable)으로 3가지를 제공한다. 검사 예외 비검사 예외(Runtime 예외, Error) 어느정도 참고할만한 지침을 따르는 것이 좋다. 📌 검사 예외 💡 호출하는 쪽에서 복구하리라 여겨지는 상황이라면 검사 예외를 사용하라 기본적으로 "복구할 수 있는 조건"이라는 전제여야 한다. 검사예외를 던지면 호출자가 해당 예외를 catch로 잡아 처리하거나, 더 바깥으로 전파하도록 강제하게 된다. 사용자가 예외를 잡기만 하고 별다른 조취를 취하지 않을 수 있는데 좋지 않은 생각이다. (Item 77) 따라서 메서드 선언에 포함된 검사 예외 각각은 해당 메서드를 호출했을 때 발생할 수 있는 유력한 결과임을 API 사용자에게 알려준다. 📌 비검사 예외 ..
[Docker] Docker Compose : Multiple Environment
·
DevOps/Docker & Kubernetes
📕 목차 1. Deploy Multiple Applications 2. Override file 3. Environment variation & Secret value 4. Extended Field 5. Setting workflow 6. Practice 1. Deploy Multiple Applications 📌 As-is Docker가 운영 환경에 상관 없이 Application을 실행할 수는 있지만, 운영 환경마다 다르게 Application을 동작시키는 것은 다른 문제다. Application을 개발 환경과 테스트 환경, 운영 환경 다르게 구동해야 하는 경우가 있다. 운영 환경은 1.5 버전 핫픽스 테스트 환경은 1.5.1 버전 사용자 테스트 환경은 1.6 버전 시스템 테스트 환경은 1.7 버전..
[Effective-Java] Chapter10 #69. 예외는 진짜 예외 상황에만 사용하라
·
Reference/Effective-Java
📌 예외를 잘못 사용한 경우 try { int i = 0; while(true) [rangepi++].climb(); } catch (ArrayIndexOutOfBoundsException e) { ... } 직관적이지 않다는 사실만으로도 이렇게 작성해선 안 된다. 잘못된 추론을 근거로 성능을 높이려 했다. (JVM에서 경계를 넘는지 확인하므로 반복문에서도 검사하면 중복일 것이라는 가정) 예외는 예외 상황에만 쓸 용도로 설계되어 JVM 구현자 입장에서 최적화에 별로 신경 쓰지 않았을 가능성이 크다. try-block을 사용하면 JVM이 적용할 수 있는 최적화가 제한된다. 배열을 순회하는 표준 관용구는 중복 검사를 수행하지 않는다. JVM이 알아서 최적화해 없애준다. 예외를 사용한 쪽이 표준 관용구보다 훨..