본문 바로가기

전체 글

(403)
프로그래머스 - 두 큐 합 같게 만들기 [2022 KAKAO TECH INTERNSHIP] https://school.programmers.co.kr/learn/courses/30/lessons/118667?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음 문제를 접했을 때 "최소비용", "최소거리" 등이 보이면 가장 먼저 생각나는 건 BFS, 다익스트라 등이다. 그래서 그렇게 생각했는데 방문체크를 할 수가 없었다. 그리고 이 문제의 의도는 Greedy 알고리즘이다. 두 합이 같아져야 하므로 언제나 큰 쪽에서 작은 쪽으로 pop하여 푸쉬하는 것이다. 그리고 최대까지 모두 돌았는데도 정답이 아니라면 이것은 방법이 없는 것으로..
백준 13904번 - 과제 (C++ / Greedy 알고리즘) https://www.acmicpc.net/problem/13904 문제를 접했을 때, 남은 일수를 먼저 할 것인가, 가장 많이 점수를 주는 과제를 수행할 것인지 잘 생각해야하는 문제이다. 가장 많은 점수를 주는 과제는 반드시 처리되어야 하지만, 최대한 나중에 밀어두고 처리해야한다. 왜냐하면  10 10005 1001 999 이라하자, 그렇다면 가장 많이 주는 과제는 10일이나 남았지만 먼저 처리해버리면 999를 주는 과제를 처리할 수 없다. 그러므로  TASK[DAYS] = DAY 일에 처리할 과제의 점수 가 들어있도록 하는 구현 방법을 사용해야한다. 이것을 떠올리기가 쉽지 않아 난이도가 있다. 보통 그리디 문제라하면 어떤 answer를 갱신하는 식으로 처리하기 때문이다. 그래서 그리디와 자주 함꼐하는..
백준 1990번 - 소수인팰린드롬 ( C++ / 에라토스테네스의 체) https://www.acmicpc.net/problem/1990 에라토스테네스의 체를 사용하면 간편하게 풀리는 문제...... 라고생각했으나 계속 시간초과가 나서 당황했다. 에라토스테네스의 체를 사용하는 방법은 두가지가 있다. 1. 범위 내의 소수 모두 찾아내기 int main(){bool check[10000]; for(int i = 2; i * i  2. 소수 판정하기bool Eratos(int N){ if(N  소수 판정 또한 O(sqrt(N)) 으로 판단해낼 수 있다. 그렇다면 이 문제는 b가 1억까지 있기 때문에 결국 1억 * 소수 판정이 들어가서 무조건 시간초과인데 어떻게 해야할까 생각이 들었는데, 소수인 팰린드롬은 천만 이후 나오지 않는다고 한다..!!! 그래서 천만까지만 보면..
백준 1106 호텔 (C++) https://www.acmicpc.net/problem/1106Cost, Value가 정해져 있는 다이나믹 프로그래밍 배낭문제이다.다만 이 문제는 평범한 배낭문제와 달리 중복을 허용한다. 그래서 이 문제는 일반적인 배낭 문제의 변형이다. 일반적인 식은 다음과 같다.for(int i = 1; i = cost){ dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - cost] + value); } else{ dp[i][j] = dp[i - 1][j]; } } } i번의 행을 만들 때는 i - 1번 행을 보고 표를 갱신하게 된다. 그래서 i - 1행에는 당연히 이번 아이템이 ..
Spring 새로운 HTTP 클라이언트 - RestClient Spring 프레임워크가 제공하는 REST Request 엔드포인트RestClient - synchronous client with a fluent API.WebClient - non-blocking, reactive client with fluent API.RestTemplate - synchronous client with template method API.HTTP Interface - annotated interface with generated, dynamic proxy implementation.RestClient가장 최근 추가된 HTTP 클라이언트로, RestTemplate의 불편함 때문에 사용하던 WebClient는 MVC에서 사용하기 위해 block처리를 해줘야하는 번거로움과 쓰지않는 라..
백준 1644번 - 소수의 연속합 (C++, 에라토스테네스의 체, 누적합, 투포인터) https://www.acmicpc.net/problem/1644 아주 어려운 문제는 아니나, 에라토스테네스의 체, 누적합, 투포인터라는 삼박자를 알고 있어야 풀 수 있는 문제였다. 에라토스테네스의 체 문제를 연속으로 풀다보니 대체 고대 그리스의 철학자들은 얼마나 천재인건가 가늠도 안된다.  아무튼 문제는 다음과 같은 단계로 이루어진다. 1. 에라토스테네스의 체를 사용해 소수 판별2. 누적합을 통해 각 소수의 범위 prefix 배열 처리3. 투포인터를 활용해 연속합중 N과 같은 것들 처리  https://tigerfrom2.tistory.com/433 알고리즘 - 에라토스테네스의 체(C++)최근 코딩테스트에서 소수를 판별해야하는 문제가 나왔다. 그래서 에라토스테네스의 체를 사용해야함을 바로 알았지만 아쉽..
네이버 부스트캠프 9기 챌린지를 수료하며 난 지금까지 뭘 한것인가…챌린지 첫주차가 끝났을 때 든 생각이다. 대학에서 나름 열심히 했다고 했는데 첫 주차부터 컴퓨터구조 강의에서 배웠던 프로세스 메모리 지식이 부족해 애먹었고 구현할 때도 능력 부족이 느껴졌다. 그런데 피어세션 시간에 다른 팀원들의 작업물을 보니 너무 훌륭하게 이론부터 구현까지 해낸 분이 계셨다. 부럽기도하고 열등감이 느껴졌다.열등감은 나를 좀먹으며 학습보다 구현에 열중하게 만들었다. 피어세션에서 “구현했다” 라고 말하기 위해서, 피어 채점에서 체크를 받기 위해 학습보다 ChatGPT를 닥달하고 이론과 동떨어진 구현만을 위한 코드를 짰다.그러다보니 시간은 시간대로 가고 남는 것은 지저분한 코드와 내가 뭘 구현한건지도 모를 이상한 것이 만들어졌다. ReadMe를 쓰다보니 이건 정말 아..
페이징과 가상 메모리 가상 메모리가상 메모리는 사용자와 논리적 주소를 물리적으로 분리하여 사용자가 메인 메모리 용량을 초과한 프로세스에 주소를 지정해서 메모리를 제한 없이 사용할 수 있도록 하는 개념이다.요구 페이징페이징 (paging)프로세스의 논리 주소 공간을 페이지라는 일정 단위로 자르고, 메모리의 물리 주소 공간을 프레임이라는 페이지와 동일한 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 기법요구 페이징은 가상 메모리에서 많이 사용하는 메모리 관리 방법이다. 스와핑을 사용하는 페이징 시스템과 비슷하다.프로그램을 실행하기 위해 프로그램의 일부만 메인 메모리에 적재하되, 순차적으로 작성되어 있는 프로그램의 모듈을 처리할 때 다른 부분은 실행하지 않는다는 특징을 이용한다.