일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 변수
- 동적계획법
- 반복문
- 10951
- 알고리즘
- 데이터길이
- 소숫점처리
- 입출력
- db
- JOIN
- algoritm
- 오라클
- 백준
- Java
- SQL
- 데이터베이스
- Database
- Algorithm
- oracle
- 자바
- select
- darkest dark
- 문자열
- Dynamic Programming
- DP
- n x 2 타일링 2
- 2156
- ANSI JOIN
- Eclipse
- 그대로 출력하기
- Today
- Total
목록Java (29)
Cracking Code
자식 클래스의 메서드 등을 강제할 때 추상 클래스 이외에 인터페이스를 사용할 수 있습니다. 인터페이스 추상 클래스와는 다르게 상수와 추상 메서드만 가질 수 있습니다. 상수는 public static final 키워드가 자동으로 지정되며 추상 메서드는 public abstract 키워드가 자동으로 지정됩니다. 객체 생성을 할 수 없으므로 독자적으로 사용할 수 없습니다. public interface interface_name { (public static final) data_type constant_name = value; // 상수 (public abstract) void method_name([data_type variabel1, ...]); // 추상 메서드 } public class class_n..
추상 클래스란 하나 이상의 추상 메서드를 포함하는 클래스입니다. 추상 클래스 객체 지향의 특징인 재사용성 및 유지 보수성을 향상 시키기 위해 하위 클래스가 반드기 부모 클래스의 메소드를 사용하게끔 강제할 필요성이 등장합니다. 추상 클래스는 추상 메서드를 하나 이상 포함하고 있으며 추상 메서드는 반드시 하위 클래스에서 오버라이딩해야 합니다. public abstract class class_name { // 추상 클래스 public abstract void method_name(); // 추상 메서드 } 추상 메서드는 함수의 body 없이 선언만 하여야 합니다. 그리고 추상 메서드와 추상 클래스를 선언할 때는 abstract 키워드를 사용합니다. 추상 클래스의 특징 1. 미완성 클래스 2. 구성요소 인스턴..
다형성이란 하나의 참조 변수가 다른 데이터형을 참조할 수 있는 능력입니다. 다형성 상속 관계에 있으면 다형성을 적용할 수 있고 형변환도 할 수 있습니다. 기본적으로 큰 타입이 작은 타입을 가리키는 구조입니다. E.g. public class Main { public static void main(String[] args) { Object[] objects = {"홍길동", new Man(), new Emp()}; for (Object o : objects) { if (o instanceof String) { System.out.println(o); } } } } // 실행 결과 홍길동 Object 는 자바의 최상위 클래스로 모든 클래스는 Object를 상속받아 정의됩니다. 그러므로 String 객체, M..
1. 접근 단순히 대각선으로, 그리고 순차적으로 오른쪽 방향으로 점점 숫자를 쌓아나가 n 번째 스티커 2장을 비교하여 출력하면 될 줄 알았습니다. 하지만 꼭 대각선으로 나아가야 한다는 규칙은 없었고 그것이 꼭 최댓값을 출력한다는 보장은 없었습니다. 2. 해결 그럼 도대체 어떻게 최댓값을 구할 수 있을까 생각하는 도중 현재 스티커에 접해 있는 스티커는 사용할 수 없으니 사용할 수 없는 스티커를 제외한 최대의 수를 가질 스티커를 골라서 비교하면 되는 간단한 문제였습니다. n - 1 번째 대각으로 구해오던 수와 그의 바로 뒤쪽에 있는 n - 2 번째 수를 비교하면 최댓값을 구할 수 있었습니다. 3. 코드 import java.io.BufferedReader; import java.io.IOException; ..
1. 접근 규칙에 따라서 가능한 계획법을 짜도록 합니다. 동적계획법에 차근차근 저장할 배열과 입력을 받아 포도주 양을 저장할 배열이 필요했습니다. 동적계획법의 배열은 dp, 포도주 양을 저장할 배열은 arr라고 합시다. 규칙1. 포도주 잔을 선택하면 그 잔에 들어있는 포도주를 모두 마시고 원래 위치에 다시 놓는다. 규칙2. 연속으로 놓여 있는 3잔을 모두 마실 수 없다. 연속으로 3잔을 안 마시기만 하면 됩니다. 차근차근 적어 나가봅니다. dp[1] = arr[1] dp[2] = dp[1] + arr[2] 이제 3잔 째로 갈리게 됩니다. 1번 포도주를 마시고 3번 포도주를 마시는 것과 2번 포도주를 마시고 3번 포도주를 마시는 것 중 더 마시는 것은 무엇인가? dp[3] = Math.max(dp[1] +..
1. 접근 이 문제의 경우 각 자리가 오름차순으로 되어 있는지를 확인하여 맞다면 오르막 수라는 조건을 이용해야 했습니다. 그렇기 때문에 "백준 10844: 쉬운 계단 수" 처럼 0 ~ 9의 수를 이용하여 구하는 문제라고 생각했습니다. 2차원 배열을 선언하여 각 n 자리 수일 때마다 끝 자리 수가 0 ~ 9 인 경우를 저장하고 마지막에 다 더하는 것으로 생각했습니다. 끝 자리의 수를 이용하여 생각하면 0은 0 ~ 9를 만들고 1은 1 ~ 9를 만들고 ... 9는 9를 만들 수 있습니다. 그러면 이런 표를 만들 수 있습니다. 2. 해결 위의 표에서 보면 n 자리의 수의 끝 자리가 i 일 경우 n - 1 자리 수 중 i 를 만들 수 있는 수들의 개수 합을 구하면 i 의 개수가 나오게 됩니다. 그러면 결국에는 ..
1. 접근 1자리 수일 경우부터 생각해보기로 했습니다. n = 1 일 때 1, 2, 3, 4, 5, 6, 7, 8, 9의 계단 수가 존재했습니다. n = 2 일 때 10, 12, 21, 23, ... , 98의 계단 수가 존재했습니다. n = 3 일 때 101, 121, 123, 210, 212, 232, 234, ... , 987, 989의 계단 수가 존재했습니다. 즉, 각 계단 수의 끝 자리의 수인 0 ~ 9에 의해 n + 1 자리 수의 계단 수가 추가되었습니다. 그래서 각 끝 자리의 수가 몇 번 나오는가를 저장할 배열이 필요했기에 2차원 배열을 사용하기로 하였습니다. 2. 해결 1부터 n의 자리 수의 끝 자리 수가 몇 번 나왔는지 그 개수를 중첩하여 저장하도록 합니다. n의 자리 수까지 다 구하고 ..
상속 관계에 있는 부모 클래스에 정의된 메소드를 자식 클래스에서 다시 정의한 것 메서드 오버라이딩 자바에서 자식 클래스는 부모 클래스의 private 멤버를 제외한 모든 것을 갖추고 있습니다. 상속 받은 메서드는 그대로 사용할 수도 있지만 자식 클래스에서 필요로 한다면 같은 이름과 같은 매개변수의 메서드로 다시 정의해서 사용할 수 있습니다. 오버라이딩의 조건 오버라이딩은 메서드의 동작만을 재정의하는 것입니다. 그러므로 메서드의 선언(반환 타입, 메서드 이름, 매개 변수)은 부모 클래스의 메서드와 같게 해야합니다. 접근 지정자의 경우 부모 클래스의 메서드보다 같거나 더 넓은 범위로만 지정할 수 있습니다. 예외 클래스의 경우 부모 클래스의 메서드보다 같거나 더 좁은 범위로만 지정할 수 있습니다. E.g. /..