Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 타입 안전 열거 패턴 책의 초판에서는 다음과 같은 타입 안전 열거 패턴(typesafe enum pattern)을 소개했었다. public class TypesafeOperation { private final String type; private TypesafeOperation(String type) { this.type = type; } public String toString() { return type; } public static final TypesafeOperation PLUS = new TypesafeOperation("+"); public static..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 타입 차이 배열과 제네릭 타입에는 중요한 차이가 두 가지 있다. 공변과 불공변 실체화(reify) 공변과 불공변 배열은 공변;함께 변한다(covariant)이다. Sub가 Super의 하위 타입이라면, Sub[]는 Super[]의 하위 타입이 된다. Long은 Object의 하위에 속해있기 때문에 Object[]와 Long[]은 함께 사용이 가능하다. @Test void objArrTest() { Object[] objectArr = new Long[1]; // 런타임 에러 발생 : java.lang.ArrayStoreException: java.lang.String..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 제네릭 제네릭(generic)은 자바 5부터 사용할 수 있으며, 안정적인 형변환을 할 수 있도록 지원하는 타입이다. 제네릭은 클래스 혹은 인터페이스에 타입 매개변수를 통해 붙여 사용할 수 있다. public class ArrayList {...} public interface List {...} 이러한 형태를 제네릭 클래스 혹은 제네릭 인터페이스라고 부르며, 이를 통 틀어서 제네릭 타입이라고도 부른다. 매개변수화 타입 각각의 제네릭 타입은 일련의 매개변수화 타입(Parameterized type)을 정의한다. public class ArrayList {...} 위 코..
문제 소개 🥇️ 문제 레벨 : 골드2 🔔 문제 유형 : 그래프, 깊이 우선 탐색, 트리 💬 풀이 언어 : JAVA ⏱️ 풀이 시간 : 20분 🖇️ 문제 링크 : 백준 문제 링크 📝 문제 트리의 지름이란, 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 트리의 지름을 구하는 프로그램을 작성하시오. 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 매겨져 있다. 먼저 정점 번호가 주어지고, 이어서 연결된 간선의 정보를 의미하는 정수가 두 개씩 주어지는데, 하나는 정점번호, 다른 하나는 그 정점까지의 거리이다. 예를 들어 네 번째 줄의 경..
문제 소개 🥇️ 문제 레벨 : 골드5 🔔 문제 유형 : 백트래킹, 브루트포스 💬 풀이 언어 : JAVA ⏱️ 풀이 시간 : 30분 🖇️ 문제 링크 : 백준 문제 링크 📝 문제 진우는 민트초코우유를 좋아하는 민초단이다. 힘든 일이 있더라도 민트초코우유 하나를 마시면 기운이 펄펄 솟는다고 한다! 민트초코우유를 너무 좋아하는 나머지 진우는 매일 아침 특정 지역들에서 민트초코우유가 배달된다는 N × N 크기의 2차원 민초마을로 이사를 하였다. 진우는 아침에 눈을 뜨면 집에서 민초마을의 지도를 들고 민트초코우유를 찾으러 출발한다. 이때의 초기 체력은 M이다. 여기에서 체력은 진우가 이동할 수 있는 거리를 나타낸다. 진우는 지도상에서 상, 하, 좌, 우로 1칸씩 이동할 수 있으며 이동하면 체력이 1만큼 줄어든다. ..
문제 소개 🥇️ 문제 레벨 : 골드4 🔔 문제 유형 : 백트래킹, 깊이 우선 탐색 💬 풀이 언어 : JAVA ⏱️ 풀이 시간 : 15분 🖇️ 문제 링크 : 백준 문제 링크 📝 문제 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다. 좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는 프로그램을 작성하시오. 말이 지나는 칸은 좌측 상단의 칸도 포함된다. 🤔 문제 ..