컴퓨터공학과 (8) 썸네일형 리스트형 백준 1761번(JAVA) - 정점들의 거리 import java.util.*; import java.io.*; class Node { int v; int w; Node(int v, int w) { this.v=v; this.w=w; } } public class Main { public static ArrayList[] arr; public static int N; public static int[] Depth; // 깊이 public static int[][] parent;// parent[0][3] 은 3번 노드의 2의0승 부모, //parent[5][3]은 3번 노드의 2의 5승부모, 즉 32번째 부모 public static int[][] length;// length[5][3] 은 3번 노드부터 2의0승 부모까지의 길이 public st.. 운영체제(11) - Memory, 주소, 논리적 주소 물리적 주소, 주소 바인딩 Logical address ( = virtual address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0 번지부터 시작 CPU가 보는 주소는 logical address임 Physical address 메모리에 실제 올라가는 위치 주소 바인딩 주소를 결정 하는 것 Symbolic Address - > Logical Address - > Physical address 언제하는가?? Compile time binding : 물리적 메모리 주소가 컴파일 시 알려짐 Load time binding : Loader의 책임 하에 물리적 메모리 주소 부여 Execution time binding ( = Run time binding) 프로그램 실행 중에도 프로세스의 메모리 상 위치를 옮길 수 있.. 운영체제(9) - 고전적인 동기화 문제들 이전 포스팅에서는 동기화 도구인 Semaphores와 Monitor를 알아보았다 이번 포스팅에서는 고전적인 동기화 문제들 3가지를 살펴보겠다. Bounded- Buffer Problem ( Producer - Consumer Problem ,유한 버퍼 문제) 그림과 같이 버퍼가 존재한다고 가정하자 Producer, 생산자 프로세스는 공유 버퍼에 데이터를 하나 만들어서 넣는 역할 Consumer, 소비자 프로세스는 공유 버퍼에서 데이터를 꺼내는 역할 만약 둘 이상의 생산자가 버퍼를 동시에 보고 데이터를 만들어 넣는다면 문제가 발생할 수 있다. 마찬가지로 둘 이상의 소비자가 동시에 동일한 버퍼의 데이터를 사용한다면 문제가 발생할 수 있다. 그러므로 동시에 버퍼에 접근할 수 없도록 락을 걸어줘야 한다. 락을 .. 운영체제(6) - CPU 스케줄링 CPU bound job CPU를 길게 쓰는 프로그램들 I / O bound job 입출력이 많은 작업들, 키보드 입력같은거 여러 종류의 JOB( = process)이 섞여 있기 때문에 CPU 스케줄링이 필요하다 CPU Scheduler Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다. Dispactcher CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘긴다 이 과정을 context switch(문맥교환)라고 한다 CPU스케줄링이 필요할 때 Running - > Blocked ( 예 : I / O 요청을 위한 시스템 콜) - > 자진 반납 Running - > Ready ( 예 : 할당시간만료로 timer interrupt) - > 강제 Blocked - .. 운영체제(4) - 스케줄러와 Thread 스케줄러 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제의 모듈을 지칭한다. Long - term Scheduler ( Job Scheduler) 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정 프로세스에 memory를 주는 문제 Short - term Scheduler ( CPU Scheduler) 어떤 프로세스를 다음번에 running 시킬지 결정 프로세스에 CPU를 주는 문제 충분히 빨라야 함( millisecond 단위) Medium - term Scheduler ( Swapper) 여유공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄 프로세스에게서 Memory를 뺏는 문제, Suspended( Stopped) 라는 프로세스의 상태를 일으킬 수 있다. 외부적인 .. 운영체제(3) - 프로세스 프로그램의 실행 커널 주소 공간의 내용 함수(function) 사용자 정의 함수 : 자신의 프로그램에서 정의한 함수 라이브러리 함수 : 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수, 자신의 프로그램의 실행 파일에 포함되어 있다 커널 함수 : 운영체제 프로그램의 함수, 커널 함수의 호출 = 시스템 콜 Process is a program in execution 프로세스는 실행중인 프로그램 프로세스 문맥이란? 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보 CPU 수행상태를 나타내는 하드웨어 문맥 Program counter 각종 register 프로세스의 주소 공간 code stack data 프로세스 관련 커널 자료 구조 PCB (Process Control Block.. 유니티 2D 로딩씬 제작 시작하기에 앞서서 https://wergia.tistory.com/194 [Unity3D] Programming - 로딩 씬(Loading Scene) 구현하기(커튼 방식) Programming - 로딩 씬(Loading Scene) 구현하기(커튼 방식) 작성 기준 버전 :: 2019.1.4f1 [이 포스트의 내용을 유튜브 영상으로도 시청하실 수 있습니다] 게임의 장르와 배경들의 종류는 많고도 많지만 그 wergia.tistory.com 이 블로그를 참고해서 글을 작성한다 가장핵심이 되는 코드는 아래와 같다 private IEnumerator Load(string sceneName) { AsyncOperation op=SceneManager.LoadSceneAsync(sceneName); //비동기 방식.. 백준 11003번(JAVA) 문제가 많이 더럽다. 로직이나 알고리즘을 요구한다기보단 어떻게든 시간을 줄여야한다. 빠른 입출력을 요구하고 덱을 활용하는데 add가 아닌 offer를 쓰고 poll이아닌 remove를 쓰고 peek이 아닌 get을 쓰고 문제 자체는 어렵지 않다. 뭐 슬라이딩 윈도우라는 이름이 있다는데 그런거 잘 몰라도 충분히 풀 수 있다. 필자는 솔직히 이 로직 하나만 봤을때 이게 플레 5문제인가 싶다. 우선 덱을 활용하는 문제인데 앞에서 뒤로 갈때 오름차순이다. 출력할땐 당연히 맨 앞의 숫자를 출력하면 된다. 이 때 맨 앞의 숫자가 주어진 범위를 벗어났으면 맨 앞의 숫자를 삭제해준다. 입력을 받을 땐 while문을 써서 맨 뒤에 숫자가(q.getLast()) 입력할 숫자보다 작을 때 까지 계속 q.removeLast(.. 이전 1 다음