반응형

분류 전체보기 629

[Java] 2750 수 정렬하기

문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. import java.io.*; import java.util.*; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); int[] arr = new int[num]; for(..

Algorithm/BAEKJOON 2023.04.21

[쉽게 배우는 운영체제] Chapter 03. 프로세스와 스레드

01 프로세스 프로그램이 실행을 위해 메모리에 올라온 동적인 상태가 프로세스다. 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조를 프로세스 제어블록(PCB)이라 하는데, 이는 커널 영역에 만들어진다. 두 프로세스의 PCB를 교환하고 작업 환경을 바꾸는 작업을 문맥 교환이라고 한다. 02 프로세스 상태 프로세스는 생성, 준비, 실행, 대기, 완료 상태를 거친다. ▶ 생성 상태 프로그램이 메모리에 올라와 프로세스가 된 상태다. ▶준비 상태 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태다. ▶ 실행 상태 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태다. 주어진 시간을 다 사용하고도 작업이 끝나지 않았다면 프로세스는 준비 상태로 돌아가 다음 차례를 기다린다. ▶ 대..

Operating System 2023.04.20

[Java] 11286 절댓값 힙

문제 절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다. 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 절댓값이 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 정수는 -231보다 크고, 231보다 작다. 출력 입력에서 0이 주어진 회수..

Algorithm/BAEKJOON 2023.04.20

[쉽게 배우는 운영체제] Chapter 02. 컴퓨터의 구조와 성능 향상

01 폰노이만 구조 폰노이만 구조의 특징은 모든 프로그램은 메모리에 올라와야 실행할 수 있다는 것이다. 02 버스와 레지스터 메인보드의 시스템을 FSB, CPU 내부 버스를 BSB라고 한다. 시스템 버스는 제어 버스, 주소 버스, 데이터 버스로 구성되며 이 중 단방향 버스는 주소 버스다. 제어 버스는 제어장치, 주소 버스는 MAR, 데이터 버스는 MBR과 연결된다. 03 CPU와 레지스터 CPU의 구성 요소는 산술논리 연산장치, 레지스터, 제어장치다. 다음에 실행할 주소를 가진 레지스터는 PC이며, 현재 실행 중인 명령어를 저장한 레지스터는 IR이다. 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하기 위해 사용하는 레지스터는 MAR이며, 메모리에서 가져온 데이터나 메모리로 옮겨 갈 데..

Operating System 2023.04.19

[Java] 2164 카드2

문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드는 4가 된다. N이 주어졌을 때, 제일 마지막에 남게 되는 카드를 구하는 프로..

Algorithm/BAEKJOON 2023.04.19

[Java] 17298 오큰수

문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,00..

Algorithm/BAEKJOON 2023.04.18

[쉽게 배우는 운영체제] Chapter 01. 운영체제의 개요

01 운영체제의 정의 컴퓨터 자원을 효율적으로 관리하는 소프트웨어를 운영체제 혹은 OS라고 부른다. 운영체제는 사용자에게 인터페이스를 제공하고 응용 프로그램에 컴퓨터 자원을 골고루 배분하여 작업 환경을 만들어 준다. 적당한 시점에 응용 프로그램으로부터 자원을 회수하고 악의적인 응용 프로그램으로부터 컴퓨터를 보호한다. 02 운영체제의 역할과 목표 컴퓨터 자원을 관리하는 운영체제의 역할은 자원 관리, 자원 보호, 하드웨어 인터페이스 제공, 사용자 인터페이스 제공이다. 운영체제는 이러한 역할을 제대로 수행하여 효율성, 안정성, 확장성, 편리성을 강화할 수 있는 형태로 발전해 왔다. 03 운영체제의 구성 운영체제의 핵심 기능을 모아놓은 것을 커널이라고 하며 커널에 명령을 내리고 그 결과를 알려주는 것을 사용자 ..

Operating System 2023.04.18

[Java] 1874 스택 수열

문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..

Algorithm/BAEKJOON 2023.04.17

[Java] 11003 최솟값 찾기

문제 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. 입력 첫째 줄에 N과 L이 주어진다. (1 ≤ L ≤ N ≤ 5,000,000) 둘째 줄에는 N개의 수 Ai가 주어진다. (-109 ≤ Ai ≤ 109) 출력 첫째 줄에 Di를 공백으로 구분하여 순서대로 출력한다. import java.io.*; import java.util.*; public class Main{ public static void main(String[] args) throws IOException { BufferedReader bufferedReader = ne..

Algorithm/BAEKJOON 2023.04.14

[Java] 12891 DNA 비밀번호

문제 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA”는 DNA 문자열이 아니지만 “ACCA”는 DNA 문자열이다. 이런 신비한 문자열에 완전히 매료된 민호는 임의의 DNA 문자열을 만들고 만들어진 DNA 문자열의 부분문자열을 비밀번호로 사용하기로 마음먹었다. 하지만 민호는 이러한 방법에는 큰 문제가 있다는 것을 발견했다. 임의의 DNA 문자열의 부분문자열을 뽑았을 때 “AAAA”와 같이 보안에 취약한 비밀번호가 만들어 질 수 있기 때문이다. 그래서 민호는 부분문자열에서 등장하는 문자의 개수가 특정 개수 이상이여야 비밀번호로 사용할 수 있다는 규칙..

Algorithm/BAEKJOON 2023.04.13
반응형