전체 글

가치있는 글 쓰기!
import java.util.*; class Solution { static int[] arr; static int[] ends; static int[][] req; static int answer = Integer.MAX_VALUE; public int solution(int k, int n, int[][] reqs) { // 12:40 // 각 유형별로 멘토 적어도 한명 이상 // 시각 오름차순, 겹치지 않음 req = new int[reqs.length][3]; for(int i = 0; i < reqs.length; i++) { req[i] = reqs[i].clone(); } arr = new int[k]; Arrays.fill(arr, 1); dfs(0, k, k ,n); return ans..
· 🔒회고
면접을 보고 망했음을 직감한 나 바로 친오빠와 여행을 가기로 마음 먹었다 그렇게 속상한 마음 털어버릴려고 어디로 떠나버릴까 하던 와중에 합격 통보를 받았다. 이왜진? 어째서? 나 분명 망했는데? 혹시 전산오류? 아님 모든 면접자 합격? 그렇게 예상치 못한 한 달 인턴을 하게 되었다. 연수원을 다녀오고 첫 출근을 했는데 내 면접관이었던 분이 나타나셔서 무척 당황했다. 나의 재롱 잔치 면접을 봤던 분이 나타남에 당황한 마음을 추스릴 틈도 없이 그대로 내 직무 멘토님이 되셨다. 첫 날에 왜 뽑았는지에 대한 얘기가 어쩌다가 나왔다. 인턴이 끝난 지금 다시 그 얘기를 되새기게 되는거 같다. 한 달 동안 정말 많은 것을 배웠다. 다만 아쉬운건 너무 넓어서 하나 하나 제대로 못한 것이다. 질문이 조금만 깊게 들어와도..
Websocket 이 필요한 이유 Historically, creating web applications that need bidirectional communication between a client and a server (e.g., instant messaging and gaming applications) has required an abuse of HTTP to poll the server for updates while sending upstream notifications as distinct HTTP calls [RFC6202]. This results in a variety of problems: o The server is forced to use a number of differen..
· 📗Java
운영체제에서 배우는 Thread의 개념을 숙지하고 자바에서는 어떻게 구현되는지 알아봅시다! Thread 구현 Thread 클래스 상속 Runnable 인터페이스 구현 Thread 클래스 상속의 경우 run() 메소드를 오버라이딩하고 Runnable 인터페이스 구현의 경우 run() abastract 메소드를 구현해주는 방식이다. 이전에 배웠겠지만 클래스 상속보다는 인터페이스 구현이 좀 더 선호된다. (자바는 단일 상속만 가능하기 때문) 다만 Runnable 자체로는 start() 메소드를 호출할 수 없다. (start 와 run의 차이는 다음에!) 따라서 Runnable 인터페이스 구현체를 Thread 생성자에 넣어 새로운 쓰레드로 생성해주고 사용하도록 한다. public class ThreadTest ..
참고 https://gyoogle.dev/blog/computer-science/data-structure/B%20Tree%20&%20B+%20Tree.html https://8iggy.tistory.com/191 https://algopoolja.tistory.com/122 https://code-lab1.tistory.com/217 B-Tree 와 B+Tree 의 차이점 B-Tree 와 B+Tree 는 더 효율적이게 원하는 데이터를 탐색할 수 있는 자료구조의 일종 으로 주로 데이터베이스의 인덱스를 사용할 때 쓰이는 알고리즘입니다. 이번 포스팅에서는 B-Tree 와 그것의 변 algopoolja.tistory.com B- tree B-tree는 Binary 가 아니라 Balanced 다. 이전의 Bin..
문제 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 접두사, 접미사 문제는 트라이를 의심해볼 수 있다. 일반적인 풀이와 트라이로 둘 다 풀어보자 1. 일반적인 풀이 public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)..
dp[n][m] : n개의 수를 m개의 구간으로 나눴을 때 구간에 속한 수들의 최댓값 점화식을 세워보도록 하자 n개의 원소를 m개의 그룹으로 나눈다. n번째 원소가 포함이 안되는 경우 dp[n][m] = dp[n-1][m] n번째 원소가 포함되는 경우 dp[n][m] = max(dp[n-2][m-1] + (n번째 원소), dp[n-3][m-1] + (n-1 ~ n번째 원소 합), dp[n-4][m-1] + (n-2 ~ n번째 원소 합), .... , dp[1][m-1] + (3 ~ n번째 원소 합)) 다만 여기서 원소합 계산을 편하게 하기 위해 누적합을 이용한다! import java.io.*; import java.util.*; public class Main { static BufferedReader..
Page Fault 처리 루틴 CPU 가 논리적 주소를 물리적 주소로 변환시키기 위해 페이지 테이블을 참조했지만 invalid bit 가 설정되어 있다면 다음과 같이 행동하게 된다. CPU 가 페이지 테이블을 참조한다. 하지만 invalid bit 이 설정되어 있다. trap 를 발생시켜 디스크 IO 를 실행시킨다. 이때 OS 는 해당 프로세스를 block 상태로 바꾼다. 디스크 IO 가 끝나기 전까지는 다른 프로세스가 CPU 를 차지한다. OS의 권한으로 디스크 IO를 실행시킨다. 메모리에 적재를 한다. valid bit 으로 바꿔준다. block 한 프로세스를 ready 큐에 넣어주고 다시 실행시킨다.페이지 교체 알고리즘 어떠한 페이지를 교체 아웃시킬 것인가에 대한 알고리즘 최적 페이지 교체 선입선출..
반효경 교수님 운영체제 강의와 도서를 정리한 내용입니다. 주소 바인딩 CPU 는 소스 코드를 읽어낼 때 physical address 가 아닌 virtual address 를 읽고 있다. 이러한 상황에서 메모리를 접근해야 한다면 physical address 가 필요해진다. 이렇게 논리적 메모리 주소를 물리적 메모리 주소로 바꿔주는 것을 Address Binding 이라고 부른다. 주소 바인딩은 물리적 메모리 주소가 결정되는 시기에 따라 세가지로 분류된다. 컴파일 타임 바인딩 코드를 컴파일할 때 물리적 메모리 주소가 정해진다. 만약에 다른 물리적 메모리 주소를 사용하고 싶다면 다시 컴파일해야 하므로 잘 사용하지 않는 기법이다. 로드 타임 바인딩 프로그램의 실행이 시작될 때에 물리적 메모리 주소가 결정된다..
반효경 교수님 운영체제 강의와 도서를 정리한 내용입니다. 데드락이란 일련의 프로세스들이 서로가 가진 자원을 기다리며 block 된 상태 이때의 자원은 IO 디바이스, CPU, 메모리, 세마포어 등이 될 수 있다. 데드락의 4가지 조건 데드락은 4가지 조건을 만족해야 성립된다. mutual exclusion (상호 배제) : 매 순간 하나의 프로세스만이 자원을 사용할 수 있다. no preemption (비선점) : 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않는다. 생각해보면 선점이 가능하다면 그대로 빼앗아 쓰면 되기 때문에 데드락이 생기지 않는다. hold and wait (보유 대기) : 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있는다. circul..
kkyu0718
개발 로그 스토리지