본문 바로가기

분류 전체보기

(271)
Separate Compilation 1. Separate compilation이란?- 분할 컴파일은 프로그램 설계하는 과정에서 유사한 함수 및 기능끼리 묶어 별개의 파일로 만들어 개발하는 방법을 의미 2. Separate Compilation의 장점- 코드의 가독성이 좋음.- 유지 보수 측면에서 효율적- 수정 작업이 이루어진 코드에 대해서만 컴파일하기 때문에 불필요한 시간 없어짐 - 아래 예시를 통해 Separate Complication의 장점을 살펴보자.  ※ 아래 코드들은 다음과 같은 기능을 수행한다.  ※ 0번 비트 -> 3번 비트로 Left Shift하고, 7번 비트 -> 4번 비트로 Right Shift 하는 동시에 반전 출력  ※ 3번 비트 -> 0번 비트로 Right Shift하는 동시에 반전 출력하고, 4번 비트 -> 7번..
Atmega128a의 변수 정리 새로운 배운 내용 및 용어가 생기면 자주 수정이 발생할 예정DDR : Data Direction Register- 특정 PORT에서 각각의 핀을 출력으로 사용할지, 입력으로 사용할지 여부를 결정하는 레지스터- 특정 PORT에서 특정 bit 위치에 1을 쓰면 "해당 비트는 출력으로 사용하겠다." 의미- 특정 PORT에서 특정 bit 위치에 0을 쓰면 "해당 비트는 입력으로 사용하겠다," 의미PORT : Port Data Register- 해당 포트가 출력으로 설정되었다면 출력값을 선택할 수 있는 레지스터- PORT 레지스터에서 특정 bit 위치에 1을 쓰면 "해당 비트(핀)의 신호는 1(=5V)로 출력" 의미- PORT 레지스터에서 특정 bit 위치에 0을 쓰면 "해당 비트(핀)의 신호는 0(=0V)로 출..
GPIO - LED control (2) 1) 환경 : Microchip studio2.) 목표 : 0핀 -> 3핀 -> 0핀, 7핀 -> 4핀 -> 7핀 LED를 Shift하여 출력3) Source code#define F_CPU 16000000UL#include #include #define TIME 150int main(void) { // PORTD의 8핀을 출력으로 설정 // PORTD = 1111 1111 DDRD = 0xff; while(1) { for(uint8_t i=0; i>i); _delay_ms(TIME); } // i의 값을 1 ~ 3으로 설정한 이유 // 0 ~ 4까지로 설정할 경우, 0, 3, 4, 7핀이 중복해서 불이 들어오기 때문에 ..
GPIO - LED control (1) GPIO - 8개의 LED를 Shift하며 출력1) 목표: Atmega 128a의 PORTD 8개의 LED를 연결 한 뒤, 0번째 비트에서 7번째 비트까지 Shift하면서 출력2) 환경: Microchip Studio 3) Source code#define F_CPU 16000000UL#include #include #define TIME 150int main(void) { // PORTD의 8핀을 출력으로 설정 // PORTD = 1111 1111 DDRD = 0xff; while(1) { for(int i=0; i※ 0번째 핀에서 부터 시작하여 7번째 핀까지 150ms 주기로 Left Shift하면서 출력※ PORTD1은 define 전처리기를 통해 1로 정의 (자세한 내..
Java - [백준] 2775번 : 부녀회장이 될테야 1. 문제 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 입력 : 첫 번째 줄에 Test case의 수 T가 주어지며, 그다음부터 층수 k, 호수 n이 주어진다 출력 : 각각의 Test case에 대해서 해당 집에 거주민 수를 출력하라. 2. 생각 본 문제는 크게 Recursion과 규칙성, 두 가지 경우로 풀 수 있다. 하지만, Recursion인 경우 모든 경우에 대해서 접근해야 하기 때문에 규칙성을 이용한 풀이보다 시간 면에서 상대적으로 떨어진다. 예를 들어 8층 11호(k=8..
Java - [백준] 2292번 : 벌집 1. 문제 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 입력 : 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력 : 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력 2. 생각 본 문제는 계차 수열을 이용하여 풀었다. 계차 수열 알고리즘을 이용한 이유는 다음과 같다. ex) N = 2 일 때는 2 개의 방을 이동해야 하며, ex) N = 8 일 때는 3 개의 방을 이동해야 한다. 위 몇 가지..
Java - Sorting algorithm (1) 1. Selection sort public class SelectionSort { public static void main(String[] args) { int[] list = {29, 10, 14, 37, 13}; printList(list, "Before"); for(int i=list.length; i>1; i--) { int max = 0; for(int j=1; j
Java - powerset(멱집합) 1. 문제 집합을 입력받아서 그 집합의 멱집합을 구하라. 멱집합(Powerset)이란? ▶ 주어진 집합의 모든 부분 집합들로 구성된 집합 2. 생각(Recursion Thinking) 고등학교때 배운 내용을 떠올리며, set A = {a, b, c, d, e, f}가 존재한다고 가정한다. Q) 집합 A의 부분 집합의 갯수는 몇 개인가? 집합의 원소들은 "부분 집합내에 존재하는가?"에 따라서 두 가지 경우의 수를 갖는다. 이를 바탕으로 모든 원소가 존재하지는 공집합 부터 모든 원소가 존재하는 경우까지 경우의 수를 생각하면 집합 A의 부분 집합의 갯수는 2^6 = 32개이다. 2.1. Powerset를 구현하는 알고리즘 아이디어 부분 집합의 갯수를 세는 것처럼 "특정 원소가 부분 집합에 존재하는가?"를 이용..