본문 바로가기

분류 전체보기

(78)
[BOJ 16137] 견우와 직녀 https://www.acmicpc.net/problem/16137 (견우와 직녀) 이 문제는 N X N 크기의 지도에서 견우가 (0,0)에서 출발해 (N-1, N-1)까지 가는 최단경로를 구하는 문제이다. 다만 몇 가지 제약사항이 있다. 바로 까치와 까마귀가 오작교를 만들어줘야하는데 노령화(?)로 인해 직녀에게 가는 오작교를 한 번에 만들지 못한다. 그리고 만든다고 해도 지나갈 수 있는 시간이 정해져 있다. 맵은 모두 3가지의 숫자를 가진다. 0: 절벽1: 견우가 지나갈 수 있는 곳2 이상의 정수 : 이미 설치된 오작교, 정수는 오작교의 주기를 의미한다. 만약, 주기가 3인 오작교를 까치와 까마귀가 만든다면 0분, 3분, 6분, 9분 ... 에는 지나갈 수 있고 나머지 시간인 1분 , 2분, 4분, 5..
[BOJ 9095] 1, 2, 3 더하기 접근 방법 : 주어진 수를 1,2,3 으로 만들 수 있는 방법을 모두 만들어 보면 된다. 재귀를 돌리면서 가능한 경우의 수를 모두 만든다. 1234567891011121314151617181920#include using namespace std;int ans = 0;void solve(int n) { if (n == 0) { ans += 1; return; } if (n >= 1) { solve(n - 1); } if (n >= 2) { solve(n - 2); } if (n >= 3) { solve(n - 3); }}int main() { int T; cin >> T; for (int i = 1; i > n; solve(n); cout
[BOJ 1748] 수 이어 쓰기1 접근 방법 : 결과적으로 푼 방법은 1부터 1억까지 돌면서 각 숫자마다 자리수가 몇인지 일일히 세서 더한다. 123456789101112131415161718192021#include using namespace std; int len(int n) { int cnt = 0; while (n) { n = n / 10; cnt++; } return cnt;}int main() { int N; int ans = 0; cin >> N; for (int i = 1; i
[OS] 운영 체제 개요 - 운영 체제의 자원 관리 기능 운영 체제의 가장 핵심적인 기능은 자원을 효율적으로 관리하는 것이다. (1) 하드웨어 자원 : CPU, 메모리, 주변 장치 및 입출력 장치 등이 있다. CPU는 통상적으로 컴퓨터 한 대에 하나가 장착되기 때문에 서로 다른 다수의 프로세스들이 나누어 쓸 수 있도록 해야한다. (2) 소프트웨어 자원 : 응용 프로그램들과 기타 추상적인 소프트웨어 관리 프로세스 : 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램. 1. CPU 관리 방법 ( CPU 스케줄링 ) 컴퓨터에 일반적으로 하나밖에 없는 CPU를 어떤 프로세스에게 할당할 것인지를 결정하는 일. 효율적이면서 특정 프로세스가 불이익을 당하지 않도록 하는 것이 목적( 효율성, 형평성 ) 선입 선출(FCFS : First Come First Served), ..
[OS] 운영 체제 개요 - 운영 체제의 분류 운영 체제의 분류 1. 단일 작업(single tasking) vs 다중 작업 (multi tasking) (1) 단일 작업 운영 체제 한 번에 하나의 프로그램만 수행시킬 수 있는 운영 체제로 초기 컴퓨터용 운영 체제는 대개 단일 작업용 운영 체제에 해당되었다. MS 윈도즈가 나오기전 DOS 환경에서는 하나의 프로그램이 실행되는 동안 명령어를 입력할 수가 없어 한 번에 하나의 작업만 가능했다. 최근에는 대부분의 운영 체제가 동시에 두 개 이상의 프로그램을 처리할 수 있는 다중 작업을 지원한다. (2) 다중 작업 운영 체제 MS 윈도즈나 유닉스 환경에서는 하나의 프로그램의 수행이 끝나기 전에 다른 프로그램을 수행시키는 것이 가능하다. PC환경에서 다양한 프로그램들을 띄워놓을 수 있다는 점이 MS 윈도즈가 ..
[OS] 운영 체제의 개요 - 운영 체제의 기능 운영 체제의 역할은 두 가지로 나뉜다. 하나는 하드웨어적 역할, 다른 하나는 사용자에 대한역할이다. (1) 하드 웨어적 역할 - 사용자가 알기 힘든 각종 하드웨어를 운영 체제가 직접 관리하는 역할 (2) 사용자에 대한 역할 - 사용자에게 편리한 인터페이스를 제공 즉, 운영 체제의 기능은 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공(2)하고 컴퓨터 시스템 내의 자원을 효율적으로 관리하는 것.(1) (주요 역할) 편리한 환경 제공이란 운영 체제가 동시 사용자 및 프로그램들에게 각각 독자적으로 컴퓨터를 사용하는 것과 같은 환상을 제공하는 것을 말한다. 즉, 위 그림에서 보듯 사용자가 프로그램에 관해서 알지 못하더라도 프로그램을 실행할 수 있게 해주는 일이다. 예를들어, 사용자는 파일이 어떻게 복사되고..
[OS] 운영 체제 개요 - 운영 체제의 정의 운영체제(operating system)의 정의 운영 체제란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어이다. 보통 시스템(System)이란 용어는 하드웨어를 지칭하는 데 주로 사용되는데, 왜 운영 체제(Operating system) 은 소프트웨어 말할까? 운영 체제는 하드웨어와 한 몸이 되어야만 사용자에게 쓰일 수 있는 컴퓨터 시스템이 된다. 즉, 컴퓨터 전원만 켜고 운영 체제가 없을 경우에는 단순한 고철 덩어리에 불과하다. 컴퓨터라는 고철 덩어리를 사용자가 쉽게 컨트롤 할 수 있는 상태가 되게 하기 위해 운영 체제를 설치한다. 각종 소프트웨어들을 컴퓨터 하드웨어와 운영 체제 위에서 실행된다. 컴퓨터 전원을 키면 운영 체제도 동시에 실행이 된다. 보통 소프트웨어가 컴퓨터 시스템에서 수행되기 위해 ..
[BOJ 6064] 카잉 달력 접근 방법 : 저번에 풀었던 '날짜 계산' 문제와 유사하다. 똑같은 방법으로 풀려고 했지만 시간초과가 나서 당황했다. M과 N값의 범위가 40000이므로 처음부터 M*N 까지 탐색을 시도했다간 엄청난 연산 숫자에 시간초과가 난다. 따라서 더 효율적인 방법을 찾아야 했는데 내가 생각해낸 방법은 아래와 같다. L번째 년도라고 했을 때 L = M*(몫) + x (주어진 x 값) 을 만족한다. 따라서 몫을 반복문을 증가시키면서 일단 x가 의미하는 L 번째 연도를 찾고 그 L번째 년도가 (L-y) / N 을 만족한다면 찾은 L 값이 정답이 된다. L의 범위는 최대 M*N을 넘지 않으므로 반복문을 M*N까지 돌려준다. 만약 L 값이 M*N 값을 넘게 되면 -1을 리턴한다. 12345678910111213141516..