콘텐츠 내 자동삽입광고

광고1

posted by 초코생크림빵 2023. 4. 21. 01:05
반응형

C언어 / 라운드 로빈(Round Robin Method) 알고리즘

 

아래는 C 언어로 구현된 라운드 로빈(Round Robin) 스케줄링 알고리즘의 간단한 예제 코드입니다. 이 코드는 사용자로부터 프로세스의 도착 시간, 실행 시간, 및 타임 슬라이스(Time Slice) 값을 입력받아 라운드 로빈 스케줄링을 시뮬레이션합니다.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdio.h>
 
#define MAX_PROCESSES 10
 
// 프로세스 구조체 정의
typedef struct Process {
    int arrival_time;   // 도착 시간
    int burst_time;     // 실행 시간
    int remaining_time; // 남은 실행 시간
} Process;
 
int main() {
    int num_processes;                  // 프로세스 개수
    int time_slice;                     // 타임 슬라이스
    Process processes[MAX_PROCESSES];  // 프로세스 배열
 
    // 사용자로부터 프로세스 개수 입력 받음
    printf("Enter the number of processes (up to %d): ", MAX_PROCESSES);
    scanf("%d"&num_processes);
 
    // 각 프로세스의 도착 시간과 실행 시간 입력 받음
    for (int i = 0; i < num_processes; i++) {
        printf("Enter arrival time for process %d: ", i + 1);
        scanf("%d"&processes[i].arrival_time);
        printf("Enter burst time for process %d: ", i + 1);
        scanf("%d"&processes[i].burst_time);
        processes[i].remaining_time = processes[i].burst_time;
    }
 
    // 타임 슬라이스 입력 받음
    printf("Enter time slice: ");
    scanf("%d"&time_slice);
 
    int current_time = 0;  // 현재 시간
    int completed_processes = 0;  // 완료된 프로세스 개수
 
    printf("\nRound Robin Scheduling:\n");
 
    // 라운드 로빈 스케줄링 알고리즘 수행
    while (completed_processes < num_processes) {
        for (int i = 0; i < num_processes; i++) {
            if (processes[i].remaining_time > 0) {
                if (processes[i].remaining_time > time_slice) {
                    printf("Time %d: Process %d is running\n", current_time, i + 1);
                    current_time += time_slice;
                    processes[i].remaining_time -= time_slice;
                } else {
                    printf("Time %d: Process %d is completed\n", current_time, i + 1);
                    current_time += processes[i].remaining_time;
                    processes[i].remaining_time = 0;
                    completed_processes++;
                }
            }
        }
    }
 
    return 0;
}
cs

이 코드는 사용자로부터 프로세스의 도착 시간, 실행 시간, 및 타임 슬라이스 값을 입력 받고, 라운드 로빈 스케줄링 알고리즘을 수행하여 각 프로세스의 실행 순서와 완료 시간을 출력합니다. 프로세스의 도착

반응형

콘텐츠 내 자동삽입광고
posted by 초코생크림빵 2023. 4. 20. 20:22
반응형

VBA 엑셀 

VBA 엑셀 주민등록번호에서 1900년대 색깔 적용

자료에서 1900년대 태어난 사람들만 노란색을 적용하는 소스입니다.

 

1900년대 색깔 버튼을 누르면 아래 그림처럼 색깔이 적용됩니다.

 

● 아래는 소스 입니다.

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
32
33
Sub Color1900sSSN()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim ssn As String
    
    ' 작업하고자 하는 워크시트 지정
    Set ws = ThisWorkbook.Sheets("Sheet1"' 워크시트명을 Sheet1으로 변경하세요
    
    ' 작업할 범위 지정 (B1:B10)
    Set rng = ws.Range("C3:C13"' 작업할 범위를 원하는 범위로 변경하세요
    
    ' 각 셀에 대해 주민등록번호 확인 및 노란색으로 채움
    For Each cell In rng
        ssn = cell.Value
        If Mid(ssn, 81= "1" Or Mid(ssn, 81= "2" Then 
' 1900년대에 해당하는 주민등록번호
            cell.Interior.Color = RGB(2552550' 노란색으로 채움
        End If
    Next cell
End Sub
 
위 소스 코드(Color1900sSSN)를 VBA 에디터에서 실행하거나, 엑셀의 매크로로
등록하여 실행하면 B1:B10 범위에 입력된 주민등록번호 중 1900년대에 해당하는
주민등록번호를 노란색으로 채워줍니다.

주민등록번호의 입력 형식이 yymmdd-xxxxxxx 또는 yymmddxxxxxxxx로 되어
있다고 가정하고 작성된 코드이므로, 실제 사용 시에는 입력된 주민등록번호의
형식에 맞게 코드를 수정하셔야 합니다.
 
 
 
Sub ClearColorRange()
    Dim rng As Range
    Set rng = Range("C3:C13")
    rng.Interior.Color = xlNone
End Sub
 
위 소스 코드는 "C3:C13" 범위를 rng 변수에 할당하고, 그 범위의 셀 색깔을
xlNone으로 설정하여 색깔을 지웁니다.
VBA의 Range 객체를 사용하여 엑셀의 셀 범위를 다룰 수 있습니다.
Interior.Color 속성을 사용하여 셀의 배경색을 설정할 수 있습니다.
xlNone은 배경색을 없음으로 설정하는 상수 값입니다.
위 소스 코드를 VBA 에디터에서 실행하면 C3:C13 범위의 셀의 배경색이
모두 지워집니다.
 
cs

 

 

● Sub Color1900sSSN() 소스 설명

위 소스 코드(Color1900sSSN)를 VBA 에디터에서 실행하거나, 엑셀의 매크로로 등록하여
실행하면 B1:B10 범위에 입력된 주민등록번호 중 1900년대에 해당하는 주민등록번호를
노란색으로 채워줍니다.

주민등록번호의 입력 형식이 yymmdd-xxxxxxx 또는 yymmddxxxxxxxx로 되어 있다고 가정하고
작성된 코드이므로, 실제 사용 시에는 입력된 주민등록번호의 형식에 맞게 코드를 수정하셔야 합니다.


● Sub ClearColorRange()
위 소스 코드는 "C3:C13" 범위를 rng 변수에 할당하고, 그 범위의 셀 색깔을 xlNone으로 설정하여
색깔을 지웁니다. VBA의 Range 객체를 사용하여 엑셀의 셀 범위를 다룰 수 있습니다.
Interior.Color 속성을 사용하여 셀의 배경색을 설정할 수 있습니다. xlNone은 배경색을 없음으로
설정하는 상수 값입니다.
위 소스 코드를 VBA 에디터에서 실행하면 C3:C13 범위의 셀의 배경색이 모두 지워집니다.

 

◆ 소스파일

VBA_1900년색깔_ver20230420.xlsm
0.02MB

 

 

반응형

콘텐츠 내 자동삽입광고
posted by 초코생크림빵 2023. 4. 20. 07:39
반응형

 

아래는 Java를 사용하여 GPS를 이용하여 현재 위치 정보를 알려주는 간단한 소스 코드입니다. 이를 위해서는 Java에서 GPS 정보를 가져오기 위한 라이브러리를 사용해야 합니다. 예를 들어, "GPS4Java"라는 Java용 GPS 라이브러리를 사용하여 GPS 정보를 가져올 수 있습니다.

먼저, "GPS4Java" 라이브러리를 다운로드하고, 클래스패스에 추가해야 합니다. 라이브러리 다운로드 및 클래스패스 설정은 해당 라이브러리의 문서를 참고하여 진행하시기 바랍니다.

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
32
33
import de.mirkosertic.bytecoder.gps.GPS;
import de.mirkosertic.bytecoder.gps.GPSFactory;
 
public class GPSLocation {
 
    public static void main(String[] args) {
        // GPS 인스턴스 생성
        GPS gps = GPSFactory.getPlatform().createGPS();
 
        // GPS 시작
        gps.start();
 
        // GPS 정보 수신 대기
        while (!gps.hasFix()) {
            try {
                Thread.sleep(1000); // 1초 대기
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
 
        // 현재 위치 정보 출력
        double latitude = gps.getLatitude();
        double longitude = gps.getLongitude();
        System.out.println("현재 위치 정보:");
        System.out.println("위도: " + latitude);
        System.out.println("경도: " + longitude);
 
        // GPS 종료
        gps.stop();
    }
}
 
cs

 

위의 코드는 GPS4Java 라이브러리를 사용하여 GPS 정보를 가져오고, 현재 위치의 위도와 경도를 출력하는 간단한 예제입니다.

GPS 정보 수신을 위해 gps.hasFix() 메소드를 사용하여 GPS 신호를 기다리고, gps.getLatitude()와 gps.getLongitude() 메소드를 사용하여 현재 위치의 위도와 경도를 가져옵니다.

 

코드를 실행하면 현재 위치의 위도와 경도가 출력됩니다.

 

주의: 이 코드는 GPS4Java 라이브러리를 사용하는 예제이며, 해당 라이브러리의 사용법에 따라 라이브러리를 다운로드하고, 설정하는 작업이 필요합니다.

 

라이브러리의 문서를 참고하여 정확한 사용법을 확인하시기 바랍니다.

 

또한, GPS 정보를 가져오기 위해서는 GPS 수신 가능한 장치가 필요하며, 해당 장치와의 연결 및 설정이 필요할 수 있습니다.

반응형

콘텐츠 내 자동삽입광고
posted by 초코생크림빵 2023. 4. 14. 07:35
반응형

AI를 공부하기 위해서는 다양한 책을 참고할 수 있습니다. 여기에는 AI를 다루는 다양한 분야의 책을 추천해 드리겠습니다.

1. "Artificial Intelligence: A Modern Approach" by Stuart Russell and Peter Norvig
 - 인공지능 분야에서 가장 유명하고 많이 사용되는 교과서 중 하나입니다.
 - 인공지능에 대한 종합적인 내용을 다룹니다.

 

2. "Deep Learning" by Ian Goodfellow, Yoshua Bengio, and Aaron Courville
 - 딥러닝을 배우는 데에 꼭 필요한 책입니다.
 - 이론적인 내용 뿐만 아니라 실제로 딥러닝을 구현하는 방법에 대해서도 다룹니다.

 

3. "Python Machine Learning" by Sebastian Raschka and Vahid Mirjalili
 - 파이썬으로 머신러닝을 공부하기에 좋은 책입니다.
 - 머신러닝 기초부터 딥러닝까지 다양한 내용을 다룹니다.

 

4. "Superintelligence: Paths, Dangers, Strategies" by Nick Bostrom
 - 인공지능이 인간을 초월할 때에 대한 윤리적, 철학적 문제에 대해서 다룹니다.
 - 인공지능을 다루는 사람이라면 꼭 읽어봐야 할 책 중 하나입니다.

 

5. "Applied Artificial Intelligence: A Handbook for Business Leaders" by Mariya Yao, Adelyn Zhou, and Marlene Jia
 - 비즈니스 분야에서의 인공지능 응용에 대해서 다룹니다.
 - 인공지능의 응용 가능성을 탐구하고 구현하는 방법에 대해서 다룹니다.

 

이 외에도 인공지능 분야에서 다루는 특정 분야에 대한 책이 많이 있습니다. 예를 들면, 자연어 처리(NLP), 컴퓨터 비전(CV), 강화학습 등입니다. 공부하고자 하는 분야에 맞는 책을 선택하시면 됩니다.

반응형

콘텐츠 내 자동삽입광고
posted by 초코생크림빵 2023. 4. 14. 01:33
반응형

컴퓨터 부팅 시 부팅 과정은 BIOS(기본 입력 출력 시스템)이 ROM에 저장된 코드를 실행하면서 시작됩니다. 아래는 BIOS가 실행하는 부팅 과정의 간단한 어셈블리 코드 예시입니다.

 
[BITS 16] ; 16비트 코드로 작성
[ORG 0x7C00] ; BIOS가 로드할 메모리 주소
; 부트 로더 시작
; 스택 초기화
mov ax, 0x9000 ; 스택 영역을 0x9000 주소로 지정
mov ss, ax ; SS 레지스터에 스택 세그먼트 주소 저장
mov sp, 0xFFFF ; 스택 포인터를 초기화
; 디스크에서 부트 로더를 메모리에 로드
mov ax, 0x0200 ; 로드할 메모리 주소
mov es, ax ; ES 레지스터에 세그먼트 주소 저장
mov bx, 0x0000 ; 디스크에서 읽을 위치
mov ah, 0x02 ; 디스크에서 섹터 읽기
mov al, 0x01 ; 읽을 섹터 수
mov dl, 0x80 ; 부팅 디스크 드라이브
int 0x13 ; BIOS 인터럽트 호출
; 부트 로더 실행
jmp 0x0000:0x0200 ; 메모리에 로드된 부트 로더 실행
 
설명)

이 코드는 스택을 초기화하고, 디스크에서 부트 로더를 읽어와 메모리에 로드한 후, 부트 로더를 실행하는 과정을 나타냅니다.

이후에는 부트 로더가 더 많은 작업을 수행하며, 운영체제가 로드되고 실행됩니다.

 

 
반응형

콘텐츠 내 자동삽입광고
posted by 초코생크림빵 2023. 4. 9. 03:05
반응형
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
32
33
import java.util.Scanner;
 
public class QuadraticFormula {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double a, b, c;
        double discriminant, root1, root2;
 
        System.out.print("이차방정식의 계수 a를 입력하세요: ");
        a = input.nextDouble();
 
        System.out.print("이차방정식의 계수 b를 입력하세요: ");
        b = input.nextDouble();
 
        System.out.print("이차방정식의 상수 c를 입력하세요: ");
        c = input.nextDouble();
 
        discriminant = b * b - 4 * a * c;
 
        if (discriminant > 0) {
            root1 = (-+ Math.sqrt(discriminant)) / (2 * a);
            root2 = (-- Math.sqrt(discriminant)) / (2 * a);
            System.out.println("근은 " + root1 + "과 " + root2 + "입니다.");
        } else if (discriminant == 0) {
            root1 = -/ (2 * a);
            System.out.println("중근은 " + root1 + "입니다.");
        } else {
            System.out.println("실근이 존재하지 않습니다.");
        }
 
        input.close();
    }
}
cs

이 코드는 사용자로부터 이차방정식의 계수 a, b, c를 입력받아서 근의 공식을 이용하여 이차방정식의 근을 구합니다. 이차방정식의 근이 2개인 경우에는 두 개의 근을 출력하고, 중근인 경우에는 한 개의 근을 출력합니다. 또한, 이차방정식의 근이 실근이 아닌 경우에는 "실근이 존재하지 않습니다." 라는 메시지를 출력합니다. 이 코드를 실행하면 콘솔에 출력됩니다.

 

체크 / 실행 동작 확인 후 , / <---- 삭제

반응형

콘텐츠 내 자동삽입광고
posted by 초코생크림빵 2023. 4. 9. 02:47
반응형
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.util.Scanner;
 
public class Calculator {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double firstNumber, secondNumber;
        char operator;
        double result;
 
        System.out.print("첫 번째 숫자를 입력하세요: ");
        firstNumber = input.nextDouble();
 
        System.out.print("두 번째 숫자를 입력하세요: ");
        secondNumber = input.nextDouble();
 
        System.out.print("연산자를 입력하세요 (+, -, *, /): ");
        operator = input.next().charAt(0);
 
        switch (operator) {
            case '+':
                result = firstNumber + secondNumber;
                System.out.println(firstNumber + " + " + secondNumber + " = " + result);
                break;
            case '-':
                result = firstNumber - secondNumber;
                System.out.println(firstNumber + " - " + secondNumber + " = " + result);
                break;
            case '*':
                result = firstNumber * secondNumber;
                System.out.println(firstNumber + " * " + secondNumber + " = " + result);
                break;
            case '/':
                if (secondNumber == 0) {
                    System.out.println("0으로 나눌 수 없습니다.");
                    break;
                }
                result = firstNumber / secondNumber;
                System.out.println(firstNumber + " / " + secondNumber + " = " + result);
                break;
            default:
                System.out.println("잘못된 연산자입니다.");
                break;
        }
        input.close();
    }
}
 
cs

-------------------------

 

이 코드는 기본적인 덧셈, 뺄셈, 곱셈, 나눗셈의 계산이 가능한 전자 계산기입니다. 사용자로부터 두 개의 숫자와 연산자를 입력받아 해당 연산을 수행하고 결과를 출력합니다. 입력값에 따라 예외처리를 하도록 작성 코드를 실행하면 콘솔에 출력됩니다.

 

체크 / 실행동작되는지 확인 후 ▶ 문구는 삭제 <------- 삭제

반응형

콘텐츠 내 자동삽입광고
posted by 초코생크림빵 2023. 4. 7. 07:06
반응형

4차 산업에서 프리미어(Adobe Premiere) 영상편집은 다양한 분야에서 활용됩니다. 몇 가지 예시를 들어보면:

영상 제작 분야: 프리미어는 영화, TV 프로그램, 광고, 음악 비디오 등 다양한 영상 콘텐츠를 제작하는 데 사용됩니다. 영상 편집 기술을 사용하여 여러 영상 클립을 조합하고 효과를 적용하여 전문적인 영상 콘텐츠를 만들 수 있습니다.

교육 분야: 프리미어를 사용하여 교육용 비디오 콘텐츠를 제작할 수 있습니다. 예를 들어, 강의 영상, 교육 동영상, 교육용 광고 등을 제작할 수 있습니다.

마케팅 분야: 프리미어를 사용하여 제품 홍보나 마케팅 영상을 제작할 수 있습니다. 이를 통해 제품의 특징이나 브랜드 이미지를 강조하는 비디오 콘텐츠를 만들어 고객들의 관심을 끌 수 있습니다.

게임 분야: 게임 산업에서는 프리미어를 사용하여 게임의 트레일러나 캐릭터 소개 영상 등을 제작합니다. 이를 통해 게임의 매력을 강조하고 유저들의 관심을 끌어내는데 활용됩니다.

즉, 프리미어 영상편집은 다양한 산업 분야에서 활용될 수 있으며, 전문적인 영상 콘텐츠 제작에 필수적인 기술입니다.

반응형

콘텐츠 내 자동삽입광고