일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- D Flip Flop
- DHT11
- test bench
- Recursion
- Pspice
- structural modeling
- ATMEGA128A
- FND
- KEYPAD
- i2c 통신
- hc-sr04
- Linked List
- atmega 128a
- LED
- dataflow modeling
- gpio
- ring counter
- vivado
- prescaling
- BASYS3
- uart 통신
- pwm
- soc 설계
- half adder
- stop watch
- Edge Detector
- behavioral modeling
- Algorithm
- verilog
- Today
- Total
목록java (41)
거북이처럼 천천히

1. 문제 (미로 찾기) 파란색은 벽, 흰 색은 이동할 수 있는 통로를 의미 입구는 (0, 0), 출구는 (N-1, N-1)이며, 입구에서 시작해서 출구로 빠져나올 수 있도록 경로를 찾는다. 2. 생각(Recursion Thinking) 본 문제를 Recursion(재귀)를 이용하여 풀기 위해서 Recursion 하게 생각하였다. Recursion Thinking을 하면 현재 상황을 다음과 같이 나누어서 생각할 수 있다. If 현재 위치에서 출구까지 갈 수 있는 경로가 존재하려면 현재 위치가 출구 이거나 이웃한 셀들(= 현재 위치에서의 동서남북 셀)중에서 현재 위치를 지나지 않고, 출구까지 가는 경로가 있어야 한다. 2.1. Write the code by recursion. Recursion Think..
1. Basic structure of recursion recursion의 기본적인 구조는 Base area, Recursion area로 나뉘며, 각각의 area는 다음과 같은 특성을 갖는다. Base area : Recursion 내에 적어도 하나의 base area가 존재해야 하며, 이 영역은 infinite loop를 순회하는 recursion을 종료시키는 역활을 한다. Recursion area : 모든 Case는 base case에 수렴하도록 설계해야 한다. 이번에는 Recursion을 더 잘 이해하고, 일반적인 반복문과의 차이점을 확인하기 위해서 1) 일반적인 반복문으로 구현 했을 때와 2) Recursion으로 구현했을 때을 비교해보도록 하겠다. 2. Sequential search 2...
1. What is binary search? 이진 탐색(Binart search)은 정렬된 배열안에서 특정 값을 찾아내는 알고리즘이다. 배열의 원소들 중에서 중간값을 찾아서 1) 찾고자 하는 값보다 클 경우, 타켓 값은 중간 값을 기준으로 왼쪽에 위치하고, 2) 작을 경우, 타켓 값은 중간 값을 기준으로 오른쪽에 위치한 것을 알 수 있다. 동일한 방법으로 다시 중간의 값을 선택하고 비교한다. 해당 값을 찾을 때까지 이 과정을 반복한다. 2. Example of binary search List = {1, 2, 3, 4, 5, 6, 7}, Target = {1} 시작점 인덱스는 0, 종점 인덱스는 6일 경우 중간 인덱스는 (시작점 인덱스 + 종점 인덱스) / 2 = 3이다. List[3]와 target ..

1. What is Recursion? Recursion은 자기 자신을 호출하는 메서드를 의미하며, Recursion을 번역하면 "순환, 재귀 메서드" 라 한다. Java를 통해 Recursion을 구현해보자. methodForTest 메서드를 main 메서드에서 호출했으며, methodForTest 메서드내에서 다시 한번 자기 자신을 호출하였다. 아래 코드와 같이 실행하면 어떤 결과가 발생하는가? public class Test { public static void main(String[] args) { methodForTest(); } private static void methodForTest() { System.out.println("Say Hello!"); methodForTest(); } } ..

1. 문제 (다항식 계산) 2. 생각 "MySingleLinkedList" 클래스는 해더 노드와 연결 리스트의 사이즈 정보를 담고 있으며, 연결 리스트에 노드 추가 및 삭제 등을 다루는 메서드를 갖고 있다. "Node" 클래스는 연결리스트의 노드로서 데이터와 다음 노드의 참조를 갖고 있다. add 명령어를 수행하기 위해서 다음과 같은 과정 수행 ▶ 입력 받은 항의 지수와 traverse를 이용하여 입력 받은 항보다 지수가 작거나 같은 위치를 찾는다. ▶ 만약 현재 노드가 null이 아닌 동시에 입력받은 지수와 동일하다면 추가하려는 항과 동일한 항이 이미 존재하기 때문에 단순히 계수만 수정 ▶ 만약 현재 노드가 null이라면 동일한 항은 존재하지 않고, 추가하려는 항의 지수는 다항식내에서 가장 작다는 것을..

생성자(constructor) 생성자는 new 명령으로 객체를 생성될 때, 호출 없이도 자동으로 실행된다. 주 목적은 객체의 데이터 필드의 값을 초기화하는 것이다. 생성자는 객체에게 필요한 초기화 작업을 하기에 적절한 장소이다. 생성자(constructor)의 형태 생성자는 메소드 형태를 가지고 있기 때문에 메소드이지만, 메소드의 일반적인 형태와는 조금의 차이점을 갖고 있다. 클래스명과 동일한 이름을 갖고 있다. 반환 타입이 존재하지 않는다. (리턴 값이 없어도 일반적인 메소드에서는 void 를 작성해야 한다.) 생성자(constructor) 활용 생성자를 활용 전에는 먼저, 객체를 생성하고, 참조 변수를 이용하여 변수에 접근하여 값을 대입하였다. Term2 term = new Term2(); term...

1. 문제 (겹치는 최대 면적 구하기) 2. 생각 두 개의 사각형을 선택하여 겹치는지 확인 겹치면 겹치는 면적을 계산한다. 문제) 어떻게 겹치는 면적을 계산할 것인가? ▶ 아래와 같이 충분한 사이즈의 배열을 생성한 뒤, 0으로 채운다. ▶ 각각의 사각형의 위치와 사이즈 만큼 1씩 증가 시킨다. ▶ 겹치는 부분은 1씩 2번 증가하여 해당 원소들은 원소 값이 2가 된다. ▶ 원소 값이 2인 부분이 겹치는 부분이기 때문에 해당 면적을 구한다. 구한 면적이 최대 면적인지를 판단 최종적으로 최대 면적과 그 쌍을 출력 3. 풀이 및 코드 분석 package SolveProblem.Chapter2.Problem2; import java.util.Scanner; import java.io.File; import jav..

1. 문제 (다항식 계산) 2. 생각 변수 타입(다항식)에 대해서 먼저 생각해볼 필요가 있다. ▶ 다항식은 여러 개의 항들이 모여서 만든 식이라는 점을 생각 ▶ 각 항들은 계수와 차수 값을 저장할 수 있는 인스턴스 변수들이 존재하는 Term 클래스 정의▶ 다항식은 여러 개의 항들을 배열 형태로 저장하고, 실제 항들의 갯수와 다항식의 이름을 저장할 수 있는 Polynomial 클래스 정의 add 명령어를 통해 새로운 항이 들어오면 어떻게 저장할 것인가? ▶ 미리 차수를 기준으로 내림차순 저장하는 것이 나중에 출력할 때, 편리할 거 같다. ▶ 새로운 항의 차수를 통해 위치를 찾는다. ▶ for문을 이용하여 차수가 낮은 항들을 한 칸씩 뒤로 옮긴다. 하지만, add 했는데, 이전 계수와 더해져서 계수가 0이 ..