본문 바로가기

분류 전체보기71

[ OS 기초 ] 04. 프로세스 스케줄링 01. 프로세스 스케줄링의 개념 02. 스케줄링의 기준 03. 스케줄링 단계(level) 04. 스케줄링 정책 00 도입 앞서 배웠던 내용을 간단히 정리해보면, 프로세스는 자원을 할당받아 목적을 달성하기 위한 작업을 수행한다. 운영체제는 다양한 방식으로 프로세스를 처리한다 (일괄처리, 시분할 등등) 다중 프로그래밍 시스템에서는 여러 프로세스를 동시에 처리해야 한다 이때 운영체제가 어떤 프로세스에세 어떤 자원을 먼저 할당해줄지 결정하는게 스케줄링 01 프로세스 스케줄링 우리가 사용하는 시스템은 멀티 프로그래밍 시스템으로 여러 프로세스를 동시에 실행한다. 프로세스가 여러개인만큼 자원인 프로세서(cpu)를 번갈아가면서 사용해야한다. 따라서, 각 프로세스 수행을 위한 cpu를 할당해야 하는데(=자원을 나누어 사.. 2021. 6. 24.
[ SWEA ] D2 - 1983, 1979, 1976, 1974 - python 문제풀이 1983 조교의 성적매기기 scores = ["A+","A0","A-","B+","B0","B-","C+","C0","C-","D"] for tc in range(int(input())): N,K = map(int, input().split()) # i번째 점수는 (i+1)번 학생의 점수 info = [list(map(int, input().split())) for _ in range(N)] student_scores = [] for i in range(N): total = info[i][0]*0.35 + info[i][1]*0.45 + info[i][2]*0.2 student_scores.append([total, (i+1)]) student_scores.sort(key=lambda x:x[0],rev.. 2021. 6. 24.
[ SWEA ] D2 - 2001, 1989, 1986, 1984 - python 문제풀이 2001 파리퇴치 퇴치할 파리 정사각형이 어디까지 이동할 수 있을 지 파악해서 갈 수 있는 곳 까지만 for문을 도는게 그나마 시간을 조금이라도 줄이는 방법 for tc in range(int(input())): N,M = map(int, input().split()) fly = [list(map(int, input().split())) for _ in range(N)] max_value = 0 for i in range(N-M+1): for j in range(N-M+1): row_idx = i col_idx = j tmp = 0 for k in range(M): tmp += sum(fly[row_idx+k][col_idx:col_idx+M]) if tmp > max_value: max_value = .. 2021. 6. 24.
[ SWEA ] D2 - 1859, 1926, 2007, 2005 - python 문제풀이 1859 백만장자프로젝트 문제를 먼저 잘 이해하고 생각한 뒤 풀면 생각보다 쉽게 풀리는 문제 Idea 1. 일단, 최대의 이익을 내려면 계속 사다가 가장 비싸게 팔 수 있는 시점에 팔아야 한다. Idea 2. 배열을 뒤에서 부터 순회하면서, 특정 시점에서 얼마에 파는게 가장 최대일지 구하면 된다 - 제일 마지막 순간에 팔 수 있는 가격을 초기값으로 설정 - 뒤에서부터 오면서, 더 비싸게 팔 수 있는 순간이 올 경우(t2) 최대값으로 가격을 갱신해주기 - 더 비싸게 팔 수 있는 순간이 아니라면, 사는게 무조건 이득임 for tc in range(int(input())): N = int(input()) data = list(map(int, input().split())) max_value = 0 curmax.. 2021. 6. 24.
[ OS 기초 ] 03. 스레드 관리 1. 스레드의 개념 2. 스레드의 구현 00 도입 스레드에 들어가기 전 기본 개념을 한 번 더 짚어보면 - 작업 : 목적 달성을 위해 필요한 프로그램과 데이터의 묶음 - 프로세스 : 자원을 할당받아 작업을 수행해 목적을 달성하는 것, 할당받은 자원을 제어한다 - 스레드 : 프로세스의 '제어' 부분 01 스레드의 개념 스레드 = 실 (표현 할 때 ~ 로 표현) 프로세스는 자원을 할당받아 이 자원을 제어하며 작업을 수행해나간다. 여러 자원을 할당받았을 때, 이 자원들을 제어 하는 것이 바로 스레드다. 01-1 스레드 프로세스 : 자원을 제어하여 목적 달성을 위해 작업을 수행하는 것 스레드는 여기서 제어에 해당하는데, 자원은 공유하고 있기 때문에 가벼운 프로세스(Light Weight Process)라 불린다.. 2021. 6. 23.
[ SQL 고득점 kit ] IS NULL - mysql 01 이름이 없는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID; ( 프로그래머스에서는 이미 ID순으로 정렬이 되어있어서 마지막 코드가 없어도 통과는 되지만, 문제 조건에 ID 순 정렬을 요구하고 있으므로 써주는 게 더 정확 ) 02 이름이 있는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID; 또는 NOT의 위치를 앞으로 가져와서 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NOT NAME IS NULL ORDER BY ANIMAL_ID; 03 NULL 처리하기 데이터베이스 자체를 바꾸.. 2021. 6. 23.
[ OS 기초 ] 02. 프로세스 관리 1. 프로세스와 JOB의 차이 2. 프로세스의 정의와 종류 3. 관련 개념(자원, PCB) 4. 프로세스의 상태 5. 인터럽트와 문맥교환(context swithcing) 00 도입 프로세스를 아주 단순화하면 '실행의 주체'다. 평소 컴퓨터를 쓰다가 응답이 없을 때 ctrl+alt+delete 클릭해서 열어보는 작업관리자에서도 프로세스와 각 프로세스가 얼마나 cpu를 할당받고, 메모리를 사용하고 있는지 확인할 수 있다. 운영체제의 주 기능 중 하나인 프로세스 관리에 대해 알아보기 위해 먼저 프로세스란 무엇이며, 어떤 방식으로 프로세스가 동작하는지(프로그램이 실행되는지, 작업이 수행되는지) 이해한 뒤 인터럽트의 개념까지 살펴보았다. 01 프로세스 프로세스를 이해하려면 먼저 Job(작업)의 개념도 알아야 한.. 2021. 6. 23.
[ SWEA ] D1 풀이 모음 - python 2072 홀수만 더하기 for tc in range(int(input())): a = list(map(int, input().split())) s = 0 for i in range(10): if a[i]%2!=0: s += a[i] print("#{} {}".format(tc+1, s)) 2071 평균값구하기 for tc in range(int(input())): a = list(map(int, input().split())) print("#{} {}".format(tc+1, round(sum(a)/10))) 2070 큰놈,작은놈,같은놈 for tc in range(int(input())): a,b = map(int, input().split()) print("#{} ".format(tc+1), end=.. 2021. 6. 23.
[ SQL 고득점 kit ] GROUP BY - mysql 01 고양이와 개는 몇 마리 있을까 IN 조건 또는 OR 조건으로 다양하게 풀이 가능 SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count FROM ANIMAL_INS WHERE ANIMAL_TYPE IN ('Cat', 'Dog') GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE; or SELECT ANIMAL_TYPE,count(*) as 'count' FROM ANIMAL_INS WHERE ANIMAL_TYPE='Cat' or ANIMAL_TYPE='Dog' GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE 02 동명 동물 수 찾기 GROUP 으로 묶은 결과 자체에 대해 조건을 걸려면? - WHERE가 아니라 HAVI.. 2021. 6. 22.
[ SQL 고득점 kit ] SUM, MAX, MIN - mysql 01 최댓값 구하기 SELECT MAX(DATETIME) as 시간 FROM ANIMAL_INS; or SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1; 02 최솟값 구하기 SELECT MIN(DATETIME) AS 시간 FROM ANIMAL_INS; or SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME ASC LIMIT 1; 03 동물 수 구하기 SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME ASC LIMIT 1; or SELECT COUNT(*) FROM ANIMAL_INS; 04 중복 제거하기 문제 조건 잘 확인(-NULL인 경우는 집계하지 않으며-),.. 2021. 6. 22.
[ SQL 고득점 kit ] SELECT - mysql 01 모든 레코드 조회하기 SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID; 02 역순 정렬하기 : 정렬은 ORDER BY, 순서는 DESC(내림차순-큰값부터) or ASC(오름차순-기본값) SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC; 03 아픈 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' ORDER BY ANIMAL_ID; 04 어린 동물 찾기 : 같지 않다 (NOT, !=, ) SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NOT INTAKE_CONDITION='Aged' ORD.. 2021. 6. 21.
[ OS 기초 ] 01. OS개요(2) 1. 운영체제의 구조(내부) 2. 운영체제의 기능 00 도입 복습 : 운영체제는 하드웨어를 잘 관리해 사용자와 응용 어플리케이션 프로그램에 서비스를 제공하는 것 01 운영체제의 구조 운영체제는 크게 커널과 유틸리티로 나눌 수 있다 01-1 커널 단어 의미 그대로 알맹이, 즉 핵심이다. 커널은 우리가 가장 자주 사용하는 핵심 기능(프로세서, 메모리 관리 등)을 모아놓은 부분이다. 이러한 기능들은 항상 사용하는 기능이라서 메모리에 상주하고 있어 상주 프로그램, 핵, 관리자 프로그램, 제어 프로그램 등으로 불린다. 02-2 유틸리티 유틸리티는 운영체제에서 커널을 제외한 부분으로, 자주 사용하지는 않지만 가끔씩 사용하기때문에 비상주 프로그램에 속한다. 이들 프로그램은 필요할 때만 메모리에 올려서 실행한다. 이를.. 2021. 6. 21.