분류 전체보기 151

[백준] 욕심쟁이 판다 1937번 (Java)

출처 : https://www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net 풀이 방법 dp로 풀어야 하는 문제이다. dp를 설정할 때 문제를 잘 나누어야 한다. dp를 나눌 때 이전 상황에 영향을 받지 않고 앞으로의 상황에만 영향을 받도록 문제를 나누었다. dp[y][x]를 y, x에서 최대로 이동할 수 있는지로 설정했다. dfs함수 안에서 이동 가능한 부분으로 이동할 때 ret의 값과 1 + dfs(ny, nx) 값 중 더 큰 값을 ret에 업데이트..

Algorithm 2024.04.11

[프로그래머스] 이모티콘 할인행사 (Java)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/150368?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 처음으로 할일율을 조절하는 그리디 방법을 생각했으나 할인율이 너무 높아도 안되고 너무 낮아도 안된다고 생각해서 dp 방식을 생각해 봤다. 하지만 dp방식도 이모티콘 개수에 따라, dp 배열이 너무 달려져 완전탐색 방식으로 풀어야겠다고 생각했다. 먼저 완전 탐색 방법의 시간 복잡도를 계산해 봤는데 할인이 4가지 경우 밖에 없고 이모티콘도 최대 7개 까지..

Algorithm 2024.04.10

도커 Container Layer의 내용을 장기적으로 저장하기

개요 컨테이너 실행 중에 생성/변경된 데이터는 container layer에 저장되며, 컨테이너가 삭제되면 container layer에 저장된 내용도 함께 삭제된다. 컨테이너 삭제 후에도 데이터를 유지하는 방법에 대해 알아보자 본론 Container Layer의 내용을 장기적으로 저장하는 방법에는 크게 2가지가 있다. 볼륨 마운트를 통해 로컬 파일 시스템과 컨테이너의 파일 시스템을 동기화하기 export 명령어를 사용해서 컨테이너의 이미지와 Container Layer의 내용이 모두 저장된 새로운 이미지를 생성하기 1. 컨테이너 볼륨 마운트 도커 호스트 파일 시스템의 특정 디렉터리를 컨테이너 파일 시스템의 특정 디렉터리로 매핑하자 마운트 되어 공유된 디렉터리는 컨테이너가 삭제된 이후에도 도커 호스트에 ..

도커 리소스 사용량 제한하기

개요 도커 컨테이너는 리소스(CPU, MEM 등)에 제한이 없다. 즉 도커가 구동하는 호스트 머신의 자원을 100% 사용할 수 있다. 이렇게 된다면 컨테이너의 리소스 사용량이 증가하게 된다면 Host PC에 영향이 갈 수도 있고 여러 애플리케이션 간에 영향을 미칠 수 있으므로 컨테이너의 리소스를 제한하는 방법에 대해 알아보자 본론 컨테이너가 사용하는 자원량 stats 명령을 통해 확인해 보자 --no-stream 제거 시 지속적으로 확인 가능 위 이미지와 같이 메모리 LIMIT가 호스트 메모리 용량과 같음을 알 수 있다. (약 8G) 메모리 사용량 제한을 update 명령을 사용해 변경을 할 수 있다. CPU 사용량 제한을 변경해 보자 --cpuset-cpus 옵섭을 사용해서 Host Pc의 CPU 중 ..

[프로그래머스] 개인정보 수집 유효기간 (python)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 단순 string을 잘 처리할 수 있느냐의 문제이다. terms를 빠르게 처리해 주기 위해 파이썬의 딕셔너리를 사용해서 각 term에 따른 개월수를 저장했다. 그 후 cal함수를 통해 term을 더해 주었다 여기서 term의 범위는 100 이하 이므로 month가 12 이하가 될 때까지 year을 더해주는 작업이 필요하다. 그 후 보관기간이 지났는지를 판단하기 위해 strin..

Algorithm 2024.04.06

[프로그래머스] 등산코스 정하기 (python)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/118669 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 풀지 못하여 다른 분들의 풀이를 참고했다. 다익스트라를 변형한 문제였다. 이 문제의 핵심은 편도만 경로만 구하면 되는 것이다. 또 다익스트라를 적용하여 값들을 업데이트할 때 max(이전 노드의 값, 이전 노드와 현재 노드의 가중치)를 사용해야 한다. import heapq def solution(n, paths, gates, summits): graph = [[] for _ ..

Algorithm 2024.04.02

도커 기초

컨테이너는 샌드박스화 된 런타임 환경이다. 샌드박스화 : 프로세스가 보호된 영역에서 동작하여, 호스트 시스템 및 다른 프로세스에게 영향을 미치지 않는다는 것을 의미한다. 런타임 환경: 어플리케이션이 동작할 때 필요한 최소한의 실행환경 컨테이너는 호스트 OS를 공유한다. 따라서, 호스트 OS와 다른 OS 기반의 컨테이너 구동은 불가능하다. 즉, 컨테이너는 호스트 가상화처럼 게스트 OS를 호스트 OS와 분리하는 것이 아니라, 어플리케이션을 OS로부터 독립적으로 분리하는 역할을 한다. Docer는 컨테이너 가상화 기술 기반의 오픈소스 가상화 플랫폼이다. 프로세스를 격리하여 컨테이너와 같이 일정한 규격/인터페이스로 통일 CPU/메모리는 필요한 만큼만 사용 (미리 일정량을 할당해 놓는 방식이 아니다) 단 CPU/..

가상화기술(도커, 가상머신)

가상화 기술은 클라우드 컴퓨팅 서비스의 핵심 기술 중 하나이다. 가상화 실제(물리적 리소스)가 아닌, 가상의 IT 자원을 만들어내는 것 또는 그러한 기술 가상화 기술을 사용하면 가상화된 IT 자원을 이용하여 다수의 가상 머신을 생성할 수 있으며, 가상 자원은 서로 독립적임 가상화 기술의 장점 한대의 물리적 기기에서 다수의 가상 머신을 생성/관리할 수 있음 사전에 구성된 성능의 가상 컴퓨터를 반복적으로 만들어 낼 수 있음 사양, os/미들웨어,sw/라이브러리 구성이 완료된 가상 머신을 템플릿으로 만들고 새로 구성이 필요한 경우 기존에 생성한 템플릿을 사용하여 가상 머신을 쉽게 생성가능 자원 활용성 가상화 기술을 활용하면 제한 된 수의 물리적 자원을 효율적으로 운영가능 안전성 가상화 기술을 통해 만들어진 논..

시스템 디자인/확장

개요 기존 방식의 시스템 디자인 및 확장 과정을 공부하고, 이를 통해 클라우드 컴퓨팅 장점을 학습한다. 목표 간단한 SNS 시스템을 디자인 소규모 사업장을 위한 간단한 SNS 구현(직원 수 :100명) 서비스 품질(Qos)이 우수해야 한다. SNS 서비스를 제공하기 위해 필요한 서버 측 모듈/컴포넌트 웹 서버 또는 WWW + WAS 서비스 접속을 위한 웹 페이지 SNS 기능 사용 데이터베이스 디자인 디자인1: 웹 서버와 데이터베이스를 한대의 서버 컴퓨터에 설치 문제점 : 직원수가 늘어나면 정상적인 서비스가 가능? 사용자 수가 늘어나면 응답시간이 증가하고 오류가 발생한다. 디자인2: 한대의 서버를 두대로 분리 서버1에는 웹서버, 서버2에는 데이터베이스 설치 기능/역할에 따른 분할 디자인1에 비해 서비스 품..

[백준] 수들의 합 2 2003번 (python)

출처 : https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 풀이 방법 투 포인터 문제를 연습할 겸 문제를 풀어 보았다. 이중 for문으로 풀면 시간초과가 난다. 투 포인터란 배열을 순회하는 하나의 방법으로 포인터를 2개를 사용해서 순회하는 방법이다. 왼쪽 포인터와 오른쪽 포인터를 두고 풀어보자 왼쪽 포인터부터 오른쪽 포인터까지 합을 리턴하는 함수를 작성한다. 이때 배열의 합에 따라 케이스를 분리하자 배열의..

Algorithm 2024.03.24