개념
[알고리즘 개념] 순열 조합 부분집합(순조부~)
자바로 알고리즘을 풀면서 순조부에 대해서 깊게 공부해야했습니다... (파이썬은 api가 있지만 자바는 없기 때문에) 순조부를 공부하면서 자신이 없던 재귀도 공부하구,,, 의외로 문제 풀때 개념이 많이 쓰이더군용.. 그런 문제만 풀어서 그른가 아무튼 핵심 개념에 대해서 글을 써보겠습니다. 순열(Permutation) 서로 다른 n개 원소 중 r개를 뽑아서 한 줄로 나열하는 것. nPr 쉽게 예제를 통해 말하면 3명 중에서 회장 1명, 부회장 1명을 뽑는다면 (a,b) (a,c) (b,a) (b,c) (c,a) (c,b) 이런 식으로 뽑을 수 있는데 중요한 포인트는 a,b != b,a 입니다. (조합과 다른 큰 특징) 예시 코드 private static void permutation(int cnt) { /..
[운영체제 5] 운영체제 구조 (커널모드)
CPU Protection Rings CPU도 권한모드가 있다. - 사용자 모드(user mode) -> 응용 프로그램이 사용 - 커널 모드(kernel mode) : 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케 하는 모드 Level 0 ,1 ,2,3 링 형식으로 0~3 까지 둘러 쌓여있으며, Level 0은 커널, Level 3는 응용 프로그램 사용자 모드와 커널 모드가 있어서 함부로 응용 프로그램이 전체 컴퓨터 시스템을 해치지 못한다. 정리 -운영체제는 시스템 콜 제공 -프로그래밍 언어별로 운영체제 기능을 활용하기 위해, 시스템 콜을 기반으로 API 제공 -응용 프로그램은 운영체제 기능 필요시, 해당 API를 사용해서 프로그램 작성 -응용 프로그램이 실행되서, 운영체제 기능이 필요..
[운영체제 3] 시대별 흐름 및 핵심 기술 (2)
1980년대 1. 개인용 컴퓨터 시대 - > 80년대 이전 : 대형 컴퓨터를 여러명이 접속해서 사용 (UNIX) - > 80년대 : Personal Computer(PC) 2. CLI -> GUI 변화 CLI(Command Line Interface ) : 터미널 환경 GUI(Graphical User Interface) : 마우스로 누를 수 있는 일반적인 아이콘으로 이루어진 환경 1990년대 1. 응용 프로그램 시대 -> GUI 환경, 개인용 컴퓨터로 인하여 - 엑셀, 워드프로세서 - Windows OS 대중화 2. 네트워크 기술 발전 - 월드 와이드 웹(www) 인터넷 댖ㅇ화 3. 오픈소스 운동 활성화 시작 - LINUX(리눅스) 20년대 이후 1. 오픈소스 활성화 - LINUX 운영체제 - Apac..
[알고리즘] 다이나믹 프로그래밍 (DP) 이해하기
다이나믹 프로그래밍(동적계획법)이란? - 큰 문제를 풀기 위해서 작은 문제를 풀어 나가는 방식이며, 작은 문제에서 반복이 없다는 것이 특징입니다. -> 분할 정복 기법과 다른 결정적인 차이 또한 하나의 문제를 단 한 번만 푸는 알고리즘 다이나믹 프로그래밍 조건 1. 큰 문제를 작은 문제로 나눌 수 있다. 2. 작은문제에서 구한 정답은 이것을 포함한 큰 문제에서도 동일한 정답이다. 이러한 조건때문에 시간 복잡도를 훨씬 줄일 수 있습니다!!! 어떻게 구현할까요?? 메모이제이션(Memoization) 기법 활용 말 그대로 메모하는 기법입니다. 작은 문제 계산된 결과값을 배열을 사용해서 저장하고, 나중에 큰 문제에서 동일한 계산을 요구할 때 배열의 저장된 값을 불러오는 것입니다. -> dp 리스트 초기화해서 안..