2025/04/05 3

[컴퓨터 시스템] 3장 (1~3)

3.1GCC 컴파일러GNU Compiler CollectionGNU에서 만든 컴파일러리눅스, 유닉스 계열 시스템에서 많이 사용됨C언어로 작성된 코드를 컴파일해서 실행 가능한 바이너리 프로그램으로 만들어주는 도구전처리(.c->.s) 컴파일 (.s->.i) 어셈블 (.i->.o) 링크 (.o->.exe)어셈블리 코드는 하드웨어에 의존적이다CPU 아키텍처 마다 해석할 수 있는 Instruction들이 각자 다름따라서 하드웨어에 맞게 어셈블리 코드로 변환시켜야 그 위에서 애플리케이션 실행 가능기계어 코드를 배워야 하는 이유?고급 언어의 추상화 계층으로 인해 감춰진 런타임 동작을 이해할 수 있음즉 Java와 같은 언어로는 보지 못하는 것들 (데이터가 어떻게 공유되고 있는지, 데이터가 정확히 어디서 어떻게 접근되고..

[백준/Java] 12865번 : 평범한 배낭

문제https://www.acmicpc.net/problem/12865풀이dp[i][j] = i개의 물건까지 고려했을 때 배낭 최대 허용 무게가 j인 경우 얻을 수 있는 최대 가치dp[i][j] = max(v + dp[i-1][j-w], dp[i-1][j])현재 물건을 넣어주고 남은 무게를 채울 수 있는 최대값을 이전 물건 값에서 가져와 더해주거나,현재 물건이 아닌 이전 물건으로 채우는 것 중에서 더 큰 값을 넣어줌코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRead..

정글/알고리즘 2025.04.05

[백준/Java] 9251번 : LCS

문제https://www.acmicpc.net/problem/9251두 문자열의 LCS(Longest Common Subsequence, 최장 공통 부분 수열)을 구하는 문제풀이 1 - 재귀 + dpa와 b는 배열 형식으로 주어졌다고 가정l(i, j)는 a(0..i), b(0..j) 사이의 lcs 길이로 정의l(i, j)의 재귀적인 구조를 찾기두 문자열을 탐색하다가 다른 문자가 나오면a[k]값을 무시하고 a[k+1], b[k]부터 다시 lcs 탐색하거나b[k]값을 무시하고 a[k], b[k+1]부터 다시 lcs 탐색하기-> 두 분기 중 매칭 수가 더 많은 부분을 리턴같은 문자가 나오면 a[k], b[k]값이 같으므로 a[k+1], b[k+1]부터 계속 lcs 탐색하고 그 결과에 1을 더해준 후 리턴bas..

정글/알고리즘 2025.04.05