[알고리즘] DP(Dynamic Programming) 동적 계획법 이해하기
·
Knowledge/알고리즘
동적 계획법 Dynamic ProgrammingDP라고 불리는 동적 계획법은 이름대로 동적인 알고리즘이 아니다. 이름과 관련이 없으니 DP는 그냥 외워야 한다. DP는 큰 문제를 작은 문제로 나누어 재사용하는 방법을 사용한다.여기서 포인트는 '작은 것으로 나눈다'가 아니라 '재사용한다'를 주목해야 한다. 알고리즘을 처음 공부할 때는 DP에 대해 정확히 이해하지 못했다. 작은 문제로 나눈다는 것에만 집중해 분할정복법(Divide&Conquer)과 비슷한 방법이구나 라고만 알고있었다. 하지만 분할정복과 접근 방식만 같을 뿐, 계산 결과를 재사용한다는 점에서 큰 차이점이 있다.  분할 정복 Divide and Conquer말 그대로 주어진 문제를 분할하여 작은 문제로 나누고, 작은 문제부터 해결해 병합하여 전..
[Java/자바] 입출력을 위한 스트림(Stream)
·
Language/JAVA
Stream -데이터를 전달하기 위해 사용되는 연결통로 입력과 출력을 I/O (Input/Output) 라고 부른다. 그래서 각 언어마다 입출력을 위한 라이브러리에는 io 라는 단어가 사용된다. c언어의 stdio.h 와 java의 java.io 가 예시이다. 사용자가 데이터를 입력하면 이 데이터를 전송하여 출력을 하는데, 이 사이에서 매개체로 이루어지는 것이 스트림이다. 스트림은 단방향 통신만 가능해 입력과 출력을 동시에 진행할 수 없다. 동시에 하기 위해 입력스트림과 출력스트림 2개가 필요하다. 스트림은 먼저 보낸 데이터를 우선으로 연속적으로 데이터를 주고 받는다. 선입선출(First in First Out : FIFO)의 큐(Queue)와 같은 구조로 이루어졌다. 스트림은 바이트 기반으로 이루어져있..
[Java/자바] Scanner를 이용해 입력 받기
·
Language/JAVA
자바에서는 입력을 받기 위해 Scanner 클래스를 이용할 수 있다. import java.util.*; import java.util.Scanner; util 패키지 안의 모든 클래스를 사용한다는 util.* 을 가져와도 되고, Scanner 클래스를 사용한다고 직접적으로 알려주기 위해 util.Scanner 를 가져와도 된다. Scanner 클래스의 객체를 생성하고 해당 객체를 사용하여 변수에 값을 입력받을 수 있다. Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); int age = scanner.nextInt(); //String ageInput = scanner.nextLine(); //int age = Int..