분류 전체보기 (106) 썸네일형 리스트형 스택(Stack)과 큐(Queue) 스택과 큐는 가장 기본적인 자료구조이다. dfs, bfs를 구현하는데에도 쓰이며, 여러가지 알고리즘 기법이나 개념등에 적용되는 자료구조이다. 선입후출의 자료구조, 스택(Stack) 스택은 바닥이 막혀있고 윗부분이 뚫려있는 자료구조 라고 생각하면 된다. 그래서 스택은 뚫려있는 위로만 데이터가 들어올 수 있다. 그렇다면 데이터를 뺄때는?? 똑같이 위로만 데이터가 나갈수가 있다. 따라서 먼저 들어온 데이터들은 들어온 순서대로 아래로 깔리게 되고 나중에 들어올수록 먼저 나가게된다. 때문에 스택은 "선입후출"의 자료구조라고 부른다. 이러한 스택의 특성을 이용하여 대표적으로 이용되는 알고리즘이 dfs구현이다. 물론 저러한 모양은 추상적으로 표현한 것일 뿐이며, stack의 내부 구현을 타고 들어가면 배열로 구현이 .. 인터럽트란?? 왜 필요할까? 인터럽트란 쉽게 말해 기존의 CPU가 수행중인 일의 흐름을 멈추도록 태클 거는것이다. 인터럽트. 왜 필요할까? 결론부터 말하면 CPU의 효율을 극대화 하기 위해서다. CPU의 흐름을 멈추는데 효율을 극대화 시킨다고?? 어떻게?? 우선 인터럽트의 종류에는 크게 2가지가 있다. 1) 내부 인터럽트(= Trap) 하드웨어 고장(Hardware Interrupt) 컴퓨터 고장 데이터 전달 과정에서의 비트 오류 전원이 나간 경우 실행할 수 없는 명령어 : 기억장치에서 인출한 명령어의 비트 패턴이 정의되어 있지 않은 경우 명령어 실행 오류 : 나누기 0을 하는 경우 사용 권한 위배 : 사용자가 운영체제만 사용할 수 있는 자원에 액세스하는 경우 2) 외부 인터럽트 외부 인터럽트는 주로 입출력장치 에 의해 발생된다. .. 메모리 계층이란?? 메모리 계층이 왜 필요할까?? 컴퓨터상에는 속도와 용량에 따라 메모리의 종류가 다양하며 그에 따른 계층관계가 존재한다. 위의 그림에서 보면 레지스터 - 캐시 - 메모리(RAM) - 하드 디스크 순으로 되어있다. 그림상에서 위로 갈수록 속도가 빠르고 , 아래로 갈수록 용량이 커진다. 용량이 클 수록 처리 범위가 넓어지니 느려지는것이 당연하다. 그런데 메모리 계층이 왜 필요할까? 사용자 입장에서 당연히 느린 것보다는 빠른것을, 저장 용량이 작은것보다는 큰것을 원한다. 그런데 만약 속도를 높이면 레지스터처럼 용량이 너무 부족해지고, 용량을 높이면 하드디스크처럼 속도가 너무 느려지게 된다. 그래서 성능을 위해 속도와 용량의 상호보완을 위해 고안한 방법이 메모리 계층 구조이다. 어떻게 성능을 상호 보완 했다는 말일까??? cpu는 메모리에 올.. OS가 관리하는 컴퓨터의 하드웨어 컴퓨터는 크게 물리적 기계장치인 하드웨어와 어떠한 작업을 지시하는 명령어인 소프트웨어로 구성된다. 그리고 이러한 하드웨어를 관리하는 소프트웨어를 OS라고했다. 여기서 OS가 관리하는 하드웨어에는 CPU(프로세서), 메모리(기억장치), 주변장치(I.O device)가 있고 이것들을 연결해주는 시스템버스가 있다. CPU : 중앙처리장치. 데이터를 처리하는 역할 Memory : 데이터를 저장하는 기능을 수행 I/O : 컴퓨터와 외부장치 사이에 데이터를 교환하는 기능을 수행 System Bus : 위의 모든 컴퓨터 시스템 구성요소들을 연결하여 데이터 전송을 수행 CPU (프로세서)란? CPU란 중앙처리장치라고도 하며 (레지스터, 연산장치, 제어장치)로 구성되어 있다. 이러한 장치들을 이용해 메모리(RAM)에 올.. [알고리즘] 백준2669 - 합집합 면적 java package a0213; import java.util.*; public class B2669 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[][] arr = new int[100][100]; int[] rec1 = new int[4]; int[] rec2 = new int[4]; int[] rec3 = new int[4]; int[] rec4 = new int[4]; for(int i=0; i [알고리즘] 백준2527 - 직사각형 java package A0209; import java.util.*; public class 직사각형 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int f_dx=0; int f_dy=0; int f_ux=0; int f_uy=0; int s_dx=0; int s_dy=0; int s_ux=0; int s_uy=0; for(int tc=1; tc 4가지 경우 System.out.println("c"); }else if(f_uy 4개로 가능 } } } [알고리즘] 백준2605 - 줄세우기 java package a0213; import java.util.*; //Arraylist에서 중간에 값넣기 이용 public class B2605 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n+1]; ArrayList move = new ArrayList(); move.add(0); for(int i=1; i 백준2628 - 종이 자르기 java package a0213; import java.util.*; // 모든 사각형의 넓이를 들어오는 좌표를 기준으로 계산하여 list에 넣고 정렬한다 public class B2628 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int garo = sc.nextInt(); int sero = sc.nextInt(); int linenum = sc.nextInt(); ArrayList garolist = new ArrayList(); ArrayList serolist = new ArrayList(); garolist.add(0); serolist.add(0); for(int i=0; i 이전 1 ··· 6 7 8 9 10 11 12 ··· 14 다음