2025/12 3

행렬 제곱 (백준 10830번)

https://www.acmicpc.net/problem/10830 문제 풀이행렬을 제곱하기 위해서 B번 곱하면 시간 초과 분할 정복하여 log_B으로 제곱 연산 수행 (B번 -> log_B번으로 축소 가능)최종 시간 복잡도 O(N^3 logB) import java.util.*;public class Main { static int N; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); long B = sc.nextLong(); long[][] matrix = new long[N][N]; for (int i =..

Algorithm 2025.12.15

JVM 자동 메모리 관리

런타임 데이터 영역1. 프로그램 카운터PC : 현재 실행 중인 스레드의 '바이트코드 줄 번호 표시기'자바 가상 머신에서의 멀티 스레딩은 CPU 코어를 여러 스레드가 교대로 사용하는 방식으로 구현되기 때문에 특정 시각에 각 코어는 한 스레드의 명령어만 실행하게 된다.스레드 전환 후 복원하려면 스레드 각각에 고유한 프로그램 카운터가 필요하다.각 스레드의 카운터는 서로 영향을 주지 않는 독립된 영역에 저장된다. 이 영역을 스레드 프라이빗 메모리라고 한다.스레드가 네이티브 메서드를 실행 중일 때 프로그램 카운터 값은 Undefined이다. 2. 자바 가상 머신 스택자바 가상 머신 스택도 '스레드 프라이빗'하다.각 메서드가 호출될 때마다 자바 가상 머신은 스택 프레임을 만들어 지역 변수 테이블, 피연산자 스택, ..

Java 2025.12.11

소수 판별

에라토스테네스의 체 에라토스테네스의 체수학에서 에라토스테네스의 체는 소수를 찾는 빠르고 쉬운 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다.www.google.com 자바 코드// maxV는 최댓값boolean[] isPrime = new boolean[maxV + 1];Arrays.fill(isPrime, true);isPrime[0] = isPrime[1] = false;for (int i = 2; i * i i * i가 maxV보다 작거나 같은 값까지 실행하는 이유는? 만약 n보다 작은 어떤 수 m이 m=ab라면 a와 b 중 적어도 하나는 루트n 이하이다. 즉, n보다 작은 합성수 m은 루트n​보다 작은 수의 배수만 체크해도 전부 지워진다는 의미이므로, 루트 n​ 이하의 수의 배수만 ..

Algorithm 2025.12.01