일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 멘딕스
- 완전탐색
- dfs
- 매개변수 탐색
- 재귀
- 프로그래머스
- 알고리즘
- Sort
- git
- 해시맵
- lcap
- 그래프
- algorithm
- 집합
- SQL
- 트리
- Recursion
- 백트래킹
- MySQL
- 가중치없는그래프
- microflow
- 이분탐색
- 스택
- domain model
- 정렬
- 자료구조
- Bruteforce
- 자바
- Mendix
- 반효경교수님
- Today
- Total
목록분류 전체보기 (144)
mondegreen
순서 O 중복 X 서로 다른 것들 중 몇 개를 뽑아서 나열하는 것 import java.util.Scanner; public class Main { static int n, m; static int[] selected; static boolean[] used; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); m = sc.nextInt(); selected = new int[m + 1]; used = new boolean[n + 1]; rec(1); sc.close(); } private static void rec(int idx) { // 기저조건 if (idx == m + 1) {..
완전 검색이란 문제의 해법으로 생각할 수 있는 모든 경우의 수를 나열해보고 확인하는 기법으로서 상대적으로 빠른 시간 내에 알고리즘 설계가 가능하다. 경우의 수가 적을 때 유용하며, 모든 경우의 수를 생성한 후 테스트하기 때문에 수행속도는 느리지만 해답을 찾지 못할 가능성이 현저히 낮다. ** 완전 검색을 이용한 Baby-gin 1) 6개의 숫자로 만들 수 있는 모든 경우의 수를 나열한다 => 중복을 포함한 순열 2) 앞 3개의 숫자, 뒤 3개의 숫자를 구분하여 run(연속된 수) 또는 triplet(동일한 수) 여부를 판단한다. 완전 검색은 전형적으로 순열, 조합, 부분집합과 같은 조합적 문제와 연관되어 있다. ** 검색 기법 https://rileylee.tistory.com/5 검색 검색이란 저장된 ..
재귀는 주어진 문제의 해를 구하기 위해 동일하면서 더 작은 문제의 해를 이용한다. 하나의 큰 문제를 해결하기 위해 다소 해결하기 쉬운 작은 문제의 결과를 조합한다. 재귀함수(Recursive Function)함수 내부에서 자기 자신을 호출하는 함수로서기저 부분(basis part)와 유도부분(inductive part)으로 이루어져 있다. 함수 호출은 프로그램의 메모리 구조 중 스택을 사용한다. 반복적으로 스택을 사용하기 때문에 메모리 및 속도에서 성능 저하가 발생한다. 함수 호출 시 기저 부분이 작동하지 않으면 자기 자신을 무한 호출하여 stackoveflow 발생 // n!에 대한 재귀함수int fact(int n){ if(n** 반복과의 비교n이 커질수록 재귀가 반복보다 메모리와 연산속도 효..
CPU는 interupt가 들어온 것이 있는지 확인 후 없다면 프로그램 카운터라는 레지스터가 가리키는 메모리 주소에서 인스트럭션(보통 4bite) 하나를 읽어서 실행한다. 인터럽트가 들어온 것이 있다면 하던 작업(프로그램에 할당된 상태)을 멈추고 CPU의 제어권은 운영체제로 넘어가게 된다. 그러면 운영체제는 인터럽트마다 해야하는 일들이 운영체제 안에 커널함수로 정의되어 있는대로 실행한다. 인터럽트 벡터: 각 인터럽터 번호와 주소를 가지고 있음(각 인터럽터의 종류를 나타내는 번호와 어느 메모리에 있는 인스트럭션을 실행해야 하는지 주소) 인터럽트 처리 루틴: 실제로 해야하는 행동 즉, 인터럽트를 처리하는 커널 함수 CPU 안에는 mode bit이라는 것이 있는데 0일 때는 CPU가 실행할 수 있는 모든 기계..
Mode Bit 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위핸 보호 장치가 필요함에 따라 만들어졌다. 이를 통해 하드웨어 적으로 두 가지 모드의 operation을 지원하는데 0: 모니터모드, 커널모드, 시스템모드: 운영체제가 CPU를 가지고 있는 상태로서 OS코드를 수행하는 상태이다. 1: 사용자 모드: 사용자의 프로그램을 수행하는 상태이다. 보안 이슈가 발생할 수 있는 중요한 명령어는 반드시 OS 모드(모니터 모드)에서만 수행 가능한 특권명령이다. 인터럽트나 Exception(사용자 프로그램이 할 수 없는 요청을 했다든지 등) 발생히 하드웨어가 mode bit을 0으로 바꾼다. 그리고 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 설정한..
운영체제의 정의 협의의 운영체제(커널) 운영체제의 핵심 부분으로 PC부팅 후 계속 메모리에 상주하는 부분 광의의 운영체제 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념으로서 커널을 포함하여 파일 복사 소프트웨어와 같이 가진 기본적인 기능을 가진 부가적인 프로그램(즉, 최소한의 유틸리티)을 포함한 것을 말한다. 메모리에 상주하지 않으며 독립적인 프로그램들을 말한다. 운영체제의 목적 컴퓨터 시스템의 자원을 효율적으로 관리하는 것이 목적인데 프로세서, 기억장치, 입출력 장치와 같은 하드웨어 뿐만 아니라 프로세스, 파일, 메세지를 관리하는 소프트웨어 자원을 효율적으로 관리한다. 이와 같은 자원들이 최대한의 성능을 낼 수 있도록 형평성 있게 분배한다. 운영체제의 분류 동시작업 가능 여부: 단일 작업 /..
운영체제란, 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 계층의 필수적인 부분이다. 컴퓨터의 세계를 통치하는 core software이며 사용자, 다른 소프트웨어, 하드웨어를 연결한다. 운영체제의 역할, 1) (사용자 측면) 운영체제는 컴퓨터 하드웨어와 결합하여 컴퓨터 시스템을 이루는데 하드웨어를 직접 다루는 복잡한 부분을 대행해줌으로써 사용자에게 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공해준다. 2) (소프트웨어 측면) 컴퓨터 시스템의 프로세서, 기억장치, 입출력 장치 등을 포함하는 자원을 효율적으로 관리하는 자원관리자 역할을 한다. 실행 중인 여러 프로그램들이 원활하게 실행될 수 있도록 각각의 프로그램들에게 짧은 시간씩 CPU를 번갈아가며 할당하고, 한정된 메모리 공간을 ..
1. 절대값 처리 : Math.abs( ); 2. 반올림 처리 : Math.round( ): 3. 올림 처리 : Math.ceil( ); 4. 버림 처리 : Math.floor( );
코드를 구현하면서 조건에 따라 1을 0으로 0을 1로 변경하는 방법은 아래와 같이 다양하다. //(1)번 방식; 조건문 활용 if(flag == 1){ flag =0; }else{ flag =1; } //(2)번 방식; 나머지 연산자 활용 flag = (flag+1)%2 //(3)번 방식; 삼항연산자 활용 flag = flag==1 ? 0 : 1 //(4)번 방식 flag = 1-flag; //(5)번 방식; XOR (Exclusive OR); 다르면 참(1)을 반환한다. (1 = 참 , 0 = 거짓) 0 XOR 0 = 0 -> 0^0 = 0 0 XOR 1 = 1 -> 0^1 = 1 1 XOR 0 = 1 -> 1^0 = 1 1 XOR 1 = 0 -> 1^1 = 0 flag^1 // -> 1이었으면 0반환..
0. 문제 1. 내 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cpNum = Integer.parseInt(br.readLine()); int[][] wP = new int[102][102]; for (int cP = 0; cP < cpNu..