[TIL] 정글 9주차 키워드 정리
·
TIL
1. User Mode and Kernel Mode일단 커널부터커널은 운영체제의 핵심이다.리소스를 효율적으로 관리하기 위해 굉장히 다양한 일들을 수행한다.예를 들면 CPU 스케쥴링, 메모리 관리, 입출력 관리, 파일 시스템  등 왜 모드를 나눠서 관리하는가?커널에서 중요한 자원들을 관리하기 때문에 프로그래머가 그 중요한 자원에 함부로 접근하지 못하도록 모드를 2가지로 나눴다.  User Mode 프로그래머는 유저 모드에서 코드를 작성하고, 프로세스를 실행하는 등의 행동을 할 수 있다. Kernel Mode모든 자원에 접근해 명령을 내릴 수 있다. 유저 모드와는 비교가 안되게 컴퓨터 내부에서 모든 짓을 할 수 있다.프로세스를 생성하거나 메모리 할당, 해제 같은 일들을 할 수 있다.대표적으로 malloc()..
[백준] 1904번 01 타일 - Python
·
알고리즘
문제지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다.어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다.그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수열을 만들 수 없게 되었다. 예를 들어, N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다. (01, 10은 만들 수 없게 되었다.) 또한 N=4일 때는 0011, 0000, 1001, 1100, 1111 등 총 5개의 2진 수..
[백준] 12865번 평범한 배낭 - Python
·
알고리즘
문제이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자. 입력첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어..
[백준] 2748번 피보나치 수 2 - Python
·
알고리즘
문제피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.n=17일때 까지 피보나치 수를 써보면 다음과 같다.0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.입력 첫째 줄에 n이 주어진다. n은 90보다 작거나 같은 자연수이다.출력 첫째 줄에 n번째 피보나치 수를 출력한다.예제 입력 110예제 출력 155 나의 첫 풀이# 사용자 입력n = int(input())# 함수 구현def fibo..
컴퓨터 구조와 운영체제 50분 만에 핵심 개념 정복하기
·
TIL
이 Youtube 영상을 보고 요약 정리했습니다. 1. 컴퓨터 구조를 알아야 하는 이유 개발자는 코드만 잘 짜면 되는거 아닌가? NO. 프로그래밍 언어 뿐 아니라 컴퓨터의 근간(컴퓨터의 구조, 운영체제)을 알아야 한다. ① 문제 해결 능력을 키울 수 있다. 똑같이 입력(같은 코드)했는데 실행이 안되요!컴퓨터를 미지의 대상이 아니라 분석의 대상으로 바라볼 수 있다.문법에 맞는 소스 코드를 컴퓨터에 입력만 하는 개발자 vs 컴퓨터를 관조하면서 문제를 해결할 수 있는 개발자  ② 성능, 용량, 비용을 고려한 프로그래밍이 가능해진다.사실 개발에서 가장 중요한 이야기 중 하나 컴퓨터를 고를 때 (무조건 저렴한 컴퓨터? 무조건 최신 컴퓨터? 단순한 접근은 안됨) 2. 컴퓨터 구조의 큰 그림컴퓨터가 이해하는 정보데이..
[백준] 11047번 동전 0 - Python
·
알고리즘
문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오입력준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오출력첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.예제 입력 110 4200151050100500100050001000050000예제 출력 16문제 해석 # 필요한 동전 개수의 최소값 구하기 (거스름돈 문제와 유사)의사 코드 # 사용자 입력 받기 (동전의 종류 : N, 동전의 합 ..
[백준] 9251번 LCS - Python
·
알고리즘
문제LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.예제 입력 1ACAYKPCAPCAK예제 출력 14 문제 해석두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제다. 이 문제는 DP 접근 방식을 활용해 풀면 된다.  의사 코드# 1. 사용자 입력 받기 # 2. 2차원 행렬로 만들기 (편의상 ..
[TIL] LCS 알고리즘
·
TIL
LCS 알고리즘최장 공통 부분문자열 (Longest Common Substring):이는 두 개 이상의 문자열에서 연속적으로 나타나는 가장 긴 공통 부분 문자열을 찾는 문제다. 점화식 if i == 0 or j == 0: # 마진 설정 LCS[i][j] = 0elif string_A[i] == string_B[j]: LCS[i][j] = LCS[i - 1][j - 1] + 1else: LCS[i][j] = 0 최장 공통 부분수열 (Longest Common Subsequence):두 개 이상의 수열에서 공통으로 나타나는 가장 긴 부분수열을 찾는 문제다. 점화식 if i == 0 or j == 0: # 마진 설정 LCS[i][j] = 0elif string_A[i] == string_B[j]: LCS[..