✔ 문제 014 절댓값 힙 구현하기 문제 바로가기 💨 ⬜ 핵심 아이디어 x = 0 일때 큐가 비어있을때는 0을 출력 비어 있지 않을때는 절댓값이 최소인 값을 출력. 절댓값이 같다면 음수를 우선하여 출력 x = 1 일때 add로 큐에 새로운 값을 추가하고 우선순위 큐 정렬 기준으로 자동 정렬 TIP : 람다함수에서 정렬 헷갈린다면, 양수면 첫번째(o1)가 뒤로.음수면 두번째(o2)가 뒤로 간다고 생각하면쉽다. PriorityQueue MyQueue = new PriorityQueue((o1, o2)->{ int first_abs = Math.abs(o1); int second_abs = Math.abs(o2); if(first_abs == second_abs) {return o1 > o2 ? 1 : -1;..
더늦으면 못올릴것같아 올리는 11월 조각모음!!!ㅎㅎ 11월은 정말 이것저것 도전 + 공부로 바빠서 후딱 지나간거 같다... 자바 공부를하고, 회사 인턴과제를 하고, 이외에도 자소서, 면접을 알아보고 준비하면서, 학교공부+학교과제도 해나갔다. 참, 그토록 나가보고싶던 해커톤도 두개나 참여했다. ㅎ 저때에는 생각없이 보냈는데..돌아보니 나름 알찼다. 그리고 그냥 지원해본 LG CNS! 물론 서류 탈락 ^^했다.뭐 어쩔수없지~~~ 아니 근데 포폴제출없이 9줄 자소서로 판가름은 너무한거아니오ㅠㅠ 그래도 급하게라도 기업제출용 자소서를 써보면서, 이를 계기로 내가 가고싶은 회사에 대한 고민을 많이 한것같다. 음...11월은, 바빴지만 여러가지 하고싶은것들을 많이 시도해봤고, 순간순간 잔잔한 행복들로 채워진 달로 ..
✔ 문제 013 카드 게임 ⬜ 핵심 아이디어 가장 위의 카드를 가장 아래에 있는 카드 밑으로 옮기는 동작은 큐의 선입선출 성질을 이용하면 쉽게 구현할 수 있다. + 파이썬의 rotate() 메서드는 deque에서 지원하는 배열 회전 메서드이다. 괄호 안에 양수를 넣으면 오른쪽으로 회전하며 음수를 넣으면 왼쪽으로 회전한다. 예제를 통해 살펴보자. from collections import deque nums = [1, 2, 3, 4, 5, 6] queue = deque(nums) queue.rotate(-1) # 왼쪽으로 1회 회전하기 print(queue) # deque([2, 3, 4, 5, 6, 1]) 왼쪽으로 한 칸씩 밀리기 때문에 맨 앞에 있던 1이 맨 뒤로 이동한 것을 확인할 수 있다. 이번에는..
✔ 문제 012 오큰수 구하기 ⬜ 핵심 아이디어 반복문으로 오큰수를 찾으면 제한시간을 초과한다. 한 번 오큰수를 탐색한 것을 재탐색하지 않는 방법을 찾아야한다. 따라서 스택을 아이디어로 생각해낼 수 있다. 스택에 새로 들어오는 수가 top에 존재하는 수보다 크면 그 수는 오큰수가 된다. 오큰수를 구한 후 수열에서 오큰수가 존재하지 않는 숫자에 -1을 출력해야 한다. 문제 바로가기 💨 위 예시를 차근차근 따라가 보자. 스택이 비었으면 push()로 수열 배열의 첫 인덱스를 push()한다. 다음 인덱스(1)가 들어올때, Top() 인덱스의 배열값이 더 작으면 pop()을 해준다.(오큰수 발견!) 그 후 다음 인덱스(1)를 push한다. 다음 인덱스(2)가 들어올때, Top() 인덱스의 배열값이 더 작지 않..
" Mechanism: Limited Direct Execution " 운영체제가 CPU를 가상화하기 위해서는 물리적인 CPU를 여러 작업이 동시에 실행되는 것처럼 공유해야 합니다. 기본 아이디어는 CPU를 시간을 나눠가며 여러 프로세스에 할당하여 가상화하는 것입니다 (time sharing). 여기에는 두 개의 도전과제가 있습니다. 첫번째로, 가상화를 구현할 때 성능을 최적화해야 합니다. 시스템에 오버헤드를 최소화하는 효율적인 가상화 방법을 고려해야 합니다. 두번째로, CPU를 제어하면서 효율적으로 프로세스를 실행해야 합니다. 운영체제는 프로세스가 영원히 실행되거나 보안에 위협이 되지 않도록 효과적으로 제어해야 합니다. 이를 위해서는 하드웨어와 운영체제의 협력과 지원이 필요합니다. 운영체제 개발자들은 ..
테스트 코드 TDD - 테스트 주도 개발.테스트 코드를먼저 작성하는 것. 단위 테스트 - 기능 단위의 테스트 코드 작성. 레드 그린 사이클 항상 실패하는 테스트를 먼저 작성(Red) 테스트가 통과하는 프로덕션 코스트를 작성(Green) 테스트 통과하면 프로덕션 코드를 리팩토링(Refactor) 테스트 장점은 빠른 피드백과 기능 보호에 있다. 테스트 코드 작성 시 도와주는 프레임워크로는 xUnit 이 있다. 이는 개발환경(x)에 따라 Unit 테스트를 도와주는 도구이다. 자바용은 JUnit이 있다. @SpringBootApplication public class FrBookApplication { public static void main(String[] args) { SpringApplication.ru..
의존성 repositories { mavenCentral() } repositories는 각종 의존성(라이브러리)들을 어떤 원격 저장소에서 받을지를 정한다. 기본적으로 mavenCentral을 많이 사용하지만,이는 정말 많은 과정과 설정이 필요하다. jcenter는 이 단점을 보완하여 라이브러리 업로드를 간단하게 하였다. 또한 jcenter에 라이브러리 업로드시 mavenCentral에도 업로드 될 수 있도록 자동화 할 수 있다. 깃과 기본설정 ctrl+shift+a 단축키 후 share project on Github를 누른다. 그 후 .idea를 빼고 깃 저장소에 업로드한다. 그 후 ctrl+shift+a 단축키 후 plugins 검색 > .ignore를 설치 후 intellij를 재시작 해준다. 재..
"추상화: 프로세스" 이 장에서는 OS가 제공하는 가장 기본적인 추상화 중 하나인 '프로세스'에 대해 논의한다. 비공식적으로 프로세스의 정의는 실행 중인 프로그램이다. 프로그램은 실행을 기다리는 일련의 명령어(정적 데이터)이다. 디스크에 놓여 있다가, 운영 체제가 이러한 바이트를 가져와 실행하게 함으로써, 프로그램을 유용한 것으로 변환하고 이를 프로세스라 한다. 우리는 한 번에 한 개 이상의 프로그램을 실행하고 싶은 경우가 종종있다. 예를 들어, 데스크톱이나 노트북에서 웹 브라우저, 메일 프로그램, 게임, 음악 플레이어 등을 실행하고 싶을 수 있다. 이때 시스템은 동시에 수십 또는 수백 개의 프로세스를 실행하는 것처럼 보인다. 문제 핵심: 물리적 CPU가 몇 개뿐이다. 그런데 OS는 어떻게 수많은 CPU..
요즘 GPT가 정말 급격히 발전하면서, 프롬프트 엔지니어링 관련 책이 많이 나오고 있다. 사실 언젠가 프롬프트 관련 책을 한번 읽어봐야겠다 생각하긴했는데, 서점을 둘러보니 뭔가 체계적인 목차를 가진 책을 찾기 어려웠다...-_-; 그러던 중 이 책이 눈에 띄었다. 이 책은 체계적목차와 더불어, 인공지능의 간략한 역사와 각 언어 모델들을 쉽게 풀어 설명한다. 사실 인공지능 모델이 하도 많다보니...이게 저거였나 저게 이거였나 인알못(?)으로써 헷갈리는 순간이많은데 이 책이 정말 비전공자도 이해할만한 수준에서 쉽게 설명을 해놔서 책을읽고 모델의 발전 흐름이 일목요연하게 정리가 되었다! 사실 책의 내용을 처음 봤을때는 의문이 들었다. 너무나 당연하게 내가 프롬프트 질문할때 쓰는 방법들을 '기법'이라는 명칭하에..
당신이 생각하는 모든 것을 믿지 말라니. 이 얼마나 충격적인가. 앉은 자리에서 몰입해 후루룩 읽어 버린 책. 내 안의 혼란을 잠재워준 책이며,주변인에게 한번쯤 읽어보라고 추천할 의사가 충만하다. 이 책은 생각과 사고를 분리하는데, 생각은 자연스럽게 떠오르는 것이고 사고는 여기서 더 나아가 떠오른 생각에 대해 곱씹는것을 말한다고 한다. 우리에게 좋은 감정, 나쁜 감정을 갖게 하는 것은 삶에서 일어나는 사건이 아니라 그 사건에 대한 우리의 해석이다. 우리가 느끼는 감정은 외부의 사건에서 오는것이 아니다. 그 사건에 관한 우리 자신의 사고행위를 통해 생겨난다. 인상깊었던 구절이다. 결국 생각하는 것은 괴로움의 근원임을 인지하자는 것이 작가의 주장이다. 또한 우리 내면에는 무한한 맑음,사랑,기쁨의 우물이 늘 존..