문제 1 더보기 import java.util.*; public class Main { // 앞서 계산된 결과를 저장하기 위한 DP 테이블 초기화 public static int[] d = new int[100]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 정수 N을 입력받기 int n = sc.nextInt(); // 모든 식량 정보 입력받기 int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } // 다이나믹 프로그래밍(Dynamic Programming) 진행(보텀업) d[0] = arr[0]; d[1] = Mat..
고급 언어와 저급 언어 개발 언어는 고급 언어이다. 이런 언어는 개발자가 읽고 쓰기 편하게 만들어진 언어이다. 고급 언어로 작성된 소스 코드가 컴퓨터 내부에서 실행될 때는 저급 언어로 변환되어 실행된다. 고급언어 개발자가 이해하기 쉽게 만든 언어 저급언어 컴퓨터가 이해하고 실행하는 언어 컴파일 언어와 인터프리트 언어 컴파일 언어 인터프리트 언어 인터프리터에 의해 한 줄씩 실행 소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요 없음 컴파일 언어 vs 인터프리트 언어 과정 살펴보기 https://godbolt.org Compiler Explorer godbolt.org 명령어의 구조 기계어, 어셈블리어도 명령어이다. 오퍼랜드 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치를 저장 오퍼랜드..
경험해야할 학습 목표 자바 code convention을 지키면서 프로그래밍하는 경험 JUnit 사용법을 익혀 단위 테스트하는 경험 학습테스트를 하면서 JUnit 사용법을 익히는 경험 메소드를 분리하는 리팩터링 경험 경험할 객체지향 생활 체조 원칙 이번 과정을 통해 연습할 원칙은 다음 두 가지이다. 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기만 한다. 규칙 2: else 예약어를 쓰지 않는다. 이 두가지 원칙을 통해 메소드를 분리해 메소드가 한 가지 작업만 담당하도록 구현하는 연습을 목표로 한다. 이 같은 원칙 아래에서 메소드의 라인 수를 15라인이 넘지 않도록 구현한다. Clean Code 가이드 함수(메소드) 작게 만들어라. 함수를 만드는 첫 번재 규칙은 '작게'다. 함수를 만드는 두 번째 규칙은..
main method 용도 프로그램을 시작 구현한 프로그램을 테스트 사칙연산이 가능한 계산기를 구현해 보면 아래와 같이 할 수 있다. 프로덕션 코드는 프로그램 구현을 담당하는 부분으로 사용자가 실제로 사용하는 소스 코드를 의미한다. 테스트 코드는 프로덕션 코드가 정상적으로 동작하는 지를 확인하는 코드이다. main method 테스트의 문제점 Production code와 Test Code가 클래스 하나에 존재한다. 이 때문에 클래스 크기가 커지고, 복잡도가 증가한다. Test Code가 실 서비스에 같이 배포된다. main method 하나에서 여러 개의 기능을 테스트한다. (복잡도 증가) method 이름을 통해 어떤 부분을 테스트하는지에 대한 의도를 드러내기 힘들다. 테스트결과를 사람이 수동으로 확..
애너테이션 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서, 유용한 정보를 제공 소스 변경에 따른 관련 문서의 불일치 발생가 종종 발생하였다. 그래서 문서를 따로 만들기보다 소스코드와 문서를 하나의 파일로 관리하다는 것이 낫다고 생각하여 애너테이션이 등장하였다. /** ~ */는 javadoc.exe를 위한 주석이다. javadoc.exe는 소스코드의 주석으로부터 HTML문서를 생성해 낸다. 애너테이션의 사용 예(JUnit에 정보를 제공하기 위한 애너테이션) 표준 애너테이션 Java에서 제공하는 애너테이션이다. 아리 5개는 메타애너테이션으로 애너테이션을 만들 때 사용한다. @Override 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다. 오버라이딩할 때 메서드이름을 잘못 적는 실수를 하는 경우가..
0과 1로 숫자를 표현하는 방법 정보 단위 비트(bit) : 0과 1을 표현하는 가장 작은 정보 단위 n비트로 2n가지의 정보 표현 가능 프로그램은 수많은 비트로 이루어져 있음 다만, 평소 "이 파일은 8,920,120 비트야"라고 표현하진 않음 비트보다 더 큰 단위를 사용 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트... (이전 단위를 1024개씩 묶은 단위는 kiB, MiB, GiB 등으로 따로 존재한다.) 워드(word) CPU가 한 번에 처리할 수 있는 정보의 크기 단위 하프 워드(half word) : 워드의 절반 크기 풀 워드(full word) : 워드 크기 더블 워드(double word) : 워드의 두 배 크기 이진법: 0과 1로 숫자 표현하기 이진법(binary) 0과 1로..