
문제 : https://www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 🔎 Solve 다이나믹 프로그래밍(DP)을 이용하여 풀었습니다. 해당 문제를 표를 만들어서 생각해보면 점화식을 쉽게 만들어낼 수 있습니다. 문제에서 예제 입력 2번과 같이 N=6, K=4일 때를 예로 들어보겠습니다. 2차원 int형 배열을 만들어서 행에는 K (1~4)를, 열에는 N (0~ 6)을 나타내는 배열을 만들어줍니다. dp 0 1 2 3 4 5 6 1 2 3 4 해당 dp.배열을 K개의 숫자로 N을 만들 수 있는 경우의 수를 채워줍니다. 이때, K가 1개일 때는 각 숫자 자신만이 가능하니 1로 채워줍니다...

예외 번역과 예외 연쇄를 사용해라. 수행하려는 일과 관련 없어 보이는 예외가 튀어나올 때가 있다. 메서드가 저수준 예외를 처리하지 않고 바깥으로 전파해버릴 때 일어난다. 이와 같은 방식은 내부 구현 방식을 드러내어 윗 레벨 API를 오염시키는 문제가 있다. 이와 같은 문제를 피하려면 예외 번역을 사용해야 한다. 🐱🚀 예외 번역 (exception translation) 상위 계층에서 저수준 예외를 잡아 자신의 추상화 수준에 맞는 예외로 바꿔 던지는 방법이다. try{ ... // 저수준 추상화를 이용한다. } catch (LowerLevelException e){ // 추상화 수준에 맞게 번역한다. throw new HigherLevelException(...); } 🐱💻 예외 연쇄 (exceptio..

상황에 부합한다면 항상 표준 예외를 재사용하자. 예외를 재사용하는 것이 좋으며, 자바 라이브러리는 대부분 API에서 쓰기에 충분한 수의 예외를 제공한다. 표준 예외를 재사용하면 얻는 것이 많다. 첫 번째, 여러분의 API가 다른 사람이 익히고 사용하기 쉬워진다. 두 번째, 여러분의 API를 사용한 프로그램도 낯선 예외를 사용하지 않게 되어 읽기 쉽게 된다 세 번째, 예외 클래스 수가 적을수록 메모리 사용량도 줄고 클래스를 적재하는 시간도 적게 걸린다. ⛔ 표준 예외 종류 IllegalArgumentException - 호출자가 인수로 부적절한 값을 넘길 때 던지는 예외 - ex. 반복 횟수를 지정하는 매개변수에 음수를 건낼 때 쓸 수 있다. IllegalStateException - 대상 객체의 상태가 ..

꼭 필요한 곳에만 사용한다면 검사 예외는 프로그램의 안전성을 높여주지만, 남용하면 쓰기 고통스러운 API를 낳는다. 📢 검사 예외 결과를 코드로 반환하거나 비검사 예외를 던지는 것과 달리, 검사 예외는 발생한 문제를 프로그래머가 처리하여 안정성을 높이게끔 해준다. 물론, 검사 예외를 과하게 사용하면 오히려 쓰기 불편한 API가 된다. 어떤 메서드가 검사 예외를 던질 수 있다고 선언됐다면, 이를 호출하는 코드에서는 catch 블록을 두어 그 예외를 붙잡아 처리하거나 더 바깥으로 던져 문제를 전파해야만 한다. API를 제대로 사용해도 발생할 수 있는 예외이거나, 프로그래머가 의미 있는 조치를 취할 수 있는 경우라면 이 정도 부담은 감안할 수 있다. 하지만 둘 다 해당하지 않는다면 비검사 예외를 사용하는 것이..

throwable은 사용하지 말자. 자바는 문제 상황을 알리는 타입(throwable)으로 검사 예외, 런타임 예외, 에러를 제공한다. 언제나 100% 명확한 건 아니지만 따르는 지침들이 있다. 📢 검사예외 호출하는 쪽에서 복구하리라 여겨지는 상황이라면 검사 예외를 사용하라. 검사 예외를 던지면 호출자가 그 예외를 catch로 잡아 처리하거나 더 바깥으로 전파하도록 강제하게 된다. 즉, API 설계자는 API 사용자에게 검사 예외를 던져주어 그 상황에서 회복해내라고 요구한다. 비검사 throwable은 두 가지로, 바로 런타임 예외와 에러다. 둘 다 동작 측면에서는 다르지 않다. 이 둘은 프로그램에서 잡을 필요가 없거나 혹은 통상적으로 잡지 말아야 한다. 즉, 프로그램에서 비검사 예외나 에러를 던졌다는 ..
- Total
- Today
- Yesterday
- 토큰기반인증
- 이펙티브자바
- Retrofit2
- 아이템59
- BOJ
- 백준
- Container
- docker-compose
- subset
- 그래프탐색
- 조합
- Java
- 알고리즘
- dfs
- OS
- 운영체제
- DevOps
- springboot
- IMAGE
- dp
- bruteforce
- BFS
- EffectiveJava
- 완전탐색
- 아이템61
- 순열
- 완탐
- cicd
- docker
- 아이템60
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |