백준 11053. 가장 증가하는 부분 수열
·
백준
https://www.acmicpc.net/problem/11053n = int(input())arr = list(map(int,input().split()))dp = [ 1 for _ in range(n) ]for i in range(n): for j in range(i): # 내 바로 직전 애들까지 비교하겠다! if arr[i] > arr[j]: # 나보다 더 작은 애가 있다면? dp[i] = max(dp[i], dp[j]+1) # 현재 내 값보다 더 커질 수 있다면 갱신print(max(dp))
백준 1937. 욕심쟁이 판다
·
백준
https://www.acmicpc.net/problem/1937import syssys.setrecursionlimit(10**6)def recur(y,x): # 한번 계산된 값 재사용 if dp[y][x] != -1: return dp[y][x] # 동서남북 탐색 for dy, dx in [[1,0], [-1,0], [0,1], [0,-1]]: ny = y + dy nx = x + dx # 유효한 범위인지 확인 if 0
1. 운영체제(2)
·
Cs
1️⃣콘텍스트 스위칭- 인터럽트(interrupt): CPU에서 프로세스 처리 중 입출력 관련 이벤트 or 예외 상황이 발생할 때 대응할 수 있게 CPU에 처리를 요청하는 것. -> 입출력 발생 시, CPU 사용 시간이 만료될 시, 자식 프로세스를 생성할 시 발생.- 콘텍스트: CPU가 처리하는 프로세스의 정보- 콘텍스트 스위칭: 멀티 프로세스 or 멀티 스레드 환경에서 CPU가 처리 중인 프로세스의 정보를 바꾸는 것.- 프로그램 카운터: 프로세스가 이어서 처리해야 하는 명령어의 주소 값- 스택 포인터: 스택 영역에서 데이터가 채워진 가장 높은 주소 값- PCB에 프로그램 카운터와 스택 포인터 값 저장 -> 처리 중인 프로세스 변경되어도 이전에 실행하던 코드를 이어서 실행 가능!2️⃣프로세스 동기화1. ..
1. 운영체제(1)
·
Cs
1️⃣운영체제(OS, Operationg System)란?: 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층. 컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행. ex) 윈도우, 맥, 리눅스, 유닉스2️⃣CPU와 메모리 구조- CPU(중앙 처리 장치=프로세서): 컴퓨터에서 프로그램을 실행하는 데 필요한 연산을 처리하고 수행.- 메모리의 구조(2)    1. 주 기억장치(휘발성 메모리) -> RAM    2. 보조 기억장치(비휘발성 메모리) -> SSD, HDD- 메모리의 계층 구조(4)    1. 레지스터: CPU가 사용자 요청을 처리하는 데 필요한 데이터를 임시로 저장하는 기억장치    2. 캐시 메모리: CPU와 RAM 사이의 속도 차이를..
백준 14501. 퇴사
·
백준
https://www.acmicpc.net/problem/14501 1. DP 탑다운 - 1n = int(input())arr = [list(map(int,input().split())) for _ in range(n)]# T(걸리는 기간), P(수익)dp = [-1] * (n+1) # 0일부터 n일까지 얻을 수 있는 최대 수익 저장 테이블# f함수는 idx(현재 날짜)부터 얻을 수 있는 최대 수익을 반환하는 함수def f(idx): if idx >= n: # 현재 날짜가 퇴사 날짜를 넘으면 더 이상 상담할 수 없으므로 0 반환 return 0 if dp[idx] != -1: # 이미 저장되었다면 -> 중복계산 방지 return dp[idx] # 상담을 받는 ..
백준 12865. 평범한 배낭
·
백준
https://www.acmicpc.net/problem/128651. 복잡한...재귀 풀이N, K = map(int,input().split())arr = [list(map(int,input().split())) for _ in range(N)]# 무게 W 가치 Vmax_v = -1now_v = 0now_w = 0def f(idx): global max_v, now_v, now_w # 모든 아이템을 다 탐색한 경우 -> 최댓값 갱신 if idx == N: max_v = max(max_v, now_v) return # 현재 아이템을 넣을 수 있어 넣는 경우 if now_w + arr[idx][0] 2. 간단한 재귀 풀이def f(idx, w, v): ..