본문 바로가기

프로그래밍

(99)
[운영체제 학습 노트] 운영체제와 커널의 자원 독점 관리, 자원 접근의 문제점 운영체제 정의 사용자와 컴퓨터 사이에서 중계 역할을 하면서 프로그램의 실행을 관리하고 제어하는 시스템 소프트웨어 또는 인터페이스 목적 1. 자원을 독점 관리하여 자원 충돌 해결 및 효율적 사용과 관리 2. 시스템 성능 최적화 및 효율화 3. 편리한 사용자 인터페이스 제공 기능 1. CPU/프로세스 관리 2. 메모리 관리 3. 파일 시스템 관리 4. 장치 관리 5. 사용자 인터페이스 제공 운영체제의 발전 1. 폰노이만의 내장프로그램 운영체제 CPU와 메모리를 분리 하드웨어와 소프트웨어를 분리 실행할 프로그램을 메모리에 적재 후 CPU가 프로그램을 실행 2. 원시 운영체제 로더 프로그램을 메모리에 적재 사용자 프로그램을 메모리에 적재 CPU가 사용자 프로그램을 실행 3. 배치 운영체제 펀치카드를 한번에 하나..
BFS, DFS, 최선우선탐색, 휴리스틱 알고리즘, a* 알고리즘 3X3 8퍼즐 공부 퍼즐 맞추기인데 교수님이 억까 코드로 실습하라고 했음... 그래서 일단 억까코드 수정하고 저렇게 만들어봤는데 bfs는 교수님 원본 코드에서 딱히 바뀐건 없고 주석이랑 조건문 위치랑 moves 프린트 수정했고 dfs는 실습이었는데 저렇게 만드는게 맞나 모르겠다.. 일단 무한적으로 탐색하던건 조건문 위치랑 조건 수정해서 고쳐졌고 set으로 중복체킹하는데 시간복잡도 O(1)로 수정함 BFS class State: def __init__(self, board, goal, moves=0): self.board = board self.moves = moves self.goal = goal # i1과 i2를 교환하여서 새로운 상태를 반환한다. def get_new_board(self, i1, i2, moves): n..
자바 양방향 그래프 dfs - 2차원 행렬, 반복문, 스택, LinkedHashSet import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String[] line = reader.readLine().split("\\s+"); // 7, 8 int vertex = Integer.parseInt(line[0]); // 노드 int edge = Integer.parse..
운영체제 (1) ~ (3) 주차 학습 노트 운영체제 실체가 있는 소프트웨어 사용자와 하드웨어 사이에서 중계 역할을 하면서, 프로그램의 실행을 관리하고 제어하는 시스템 소프트웨어 컴퓨터의 자원을 독점적으로 관리하는 소프트웨어 운영체제의 속성 컴퓨터 자원 관리 하드웨어 자원 - CPU, 캐시, 메모리, 키보드, 마우스.... 소프트웨어 자원 - 응용프로그램 데이터 자원 - 파일, DB 자원 독점 독점 : 자원에 대한 접근과 관리 권한이 오직 운영체제에 있다는 뜻 (자원 할당, 자원 공유, 자원 액세스, 자원 입출력) 관리자 프로그램 관리, 메모리 관리 소프트웨어 커널(관리 기능을 수행하는 핵심 코드), UI, 도구 프로그램 운영체제 목적과 기능 운영체제의 목적(목표) 사용자의 컴퓨터 사용 편리성 자원의 효율적 사용과 관리 운영체제 기능 CPU/프로세..
안드로이드 스튜디오 자바 구글 tts 사용하기 간단하게 안드로이드 스튜디오에서 구글 tts를 사용하여 원하는 글을 소리로 변환하는 방법에 대해 알아보겠습니다 정말 간단하게 내가 원하는 글을 변환하기 위해 입력폼을 만들어줍니다 package com.zynar.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { private EditText etTTS; private Button btnExecute; @Override protected voi..
프로그래밍 입문 학습 노트 (1) 컴퓨팅 사고란? 1. 컴퓨터가 효과적으로 문제를 해결할 수 있도록 문제를 정의하고 그에 대한 답을 기술하는 일체의 사고 과정 2. 복잡한 문제를 단순한 문제로 분해한 후 이를 해결하기 위한 구조(알고리즘)을 만드는 과정 프로그래밍 언어 저급언어, 고급언어 소스코드 c, 자바, 파이썬 같은 프로그래밍 언어로 작성한 코드 목적코드 이진수로 이루어졌으며, 소스코드를 컴파일 또는 인터프리터를 통해 변환해야함 소프트웨어 개발 과정 문제분석 - 설계 - 프로그래밍 - 테스트 - 사용 - 유지보수 컴퓨팅 사고의 4단계 1. 문제분해 - 복잡한 문제를 작은 문제로 구분 2. 패턴인식 - 문제들 사이에 일정한 패턴 찾기 3. 일반화 - 다양한 문제의 공통된 해결 방법 모델링 4. 알고리즘 - 구체적인 순서와 방법을 개발..
자료구조와 알고리즘 학습 노트 기초 (2) 재귀와 귀납적 사고 복습 추상 데이터타입 (ADT : Abstract Data Type) 데이터나 연산이 무엇인가는 정의되지만 데이터나 연산을 컴퓨터 상에서 어떻게 구현하는가는 정의되지 않는다 재귀 (순환) 알고리즘이나 함수가 수행 도중 자기 자신을 다시 호출하여 문제를 해결하는 기법 * Good 정렬, 탐색 * Bad 피보나치수, 최적 행렬곱 경로 ex. 팩토리얼의 정의 (n!) def factorial(n): if n = 5 * 4 * factorial (3) -> ...... -> = 5 * 4 * 3 * 2 * 1 = 120 재귀호출의 가장 중요한 것은 재귀 호출을 멈추는 부분이 있어야한다 만약 없다면? 무한호출 순환 vs 반복 시간 복잡도가 동일할 때 어떤 것이 더 효율적인가? 바로 공간의 차이 프로그램의 중요도 ..
프로그래밍 입문 학습 노트 (1) 컴퓨터 기초 과거 사람들의 계산 방법 주판 -> 천공 카드 -> 기계식 계산기 -> 컴퓨터 컴퓨터의 발전 단계 역사 1세대 2세대 3세대 4세대(~ 현재) 5세대(미래~) 6세대 진공관 트랜지스터 직접 회로 (IC) 고밀도 직접회로 인공지능과 대화 자기 코어 자기코어 IC, 자기 코어 vlsi, lsi 음성 명령 자기 드럼 자기 디스크 자기 디스크 자기 디스크 초고속 장치 천공 카드 천공 카드 키보드, 마우스 대규모 병령처리 시스템 애니악, 에드박 IBM 논리적 추론을 지원하는 연산기능 기계어, 어셈블리어 포트란, 코볼 파스칼, 베이직 객체지향언어 논리프로그램, 인공지능기법, 병렬처리 개념을 내포하는 추상적 언어 제공 다중 프로그래밍 방식 소프트웨어 체계 확립 운영체제 방식 시분활, 바이트 단위 컴퓨터 ..