본문 바로가기

전체 글

프로그래머스 - 쿼드압축 후 개수 세기(Java) dfs 문제입니다. 문제의 핵심은 재귀를 돌면서, 크기가 1일때 까지 4등분을 하는 것입니다. 단, 4등분을 하기 전에 해당 크기의 정사각형 내부가 같은 수로만 이뤄졌다면 4등분을 하지 않습니다. 4등분 할 때, 아래의 그림을 참고하시면 됩니다. [구현 코드] import java.util.*; class Solution { final int[] dx = {-1, 1, 0, 0}; final int[] dy = {0, 0, -1, 1}; public int[] solution(int[][] arr) { int[] answer = {}; int n = arr.length; dfs(arr, 0, 0, n, n); // 개수 세기 int zero = 0; int one = 0; for(int i=0; i 더보기
2. 쿠버네티스 환경 구축과 예제 애플리케이션 배포 - 2 EKS를 이용하여 AWS에 쿠버네티스 클러스터를 구축하고 예제 애플리케이션을 배포하여 동작을 확인한다. 2.2.1 기본 리소스 구축 2.2.1.1 사용할 도구 설치 로컬 환경에 다음의 도구를 설치해야 한다. AWS CLI eksctl kubectl git 설치를 완료하고 다음 그림과 같이 도구의 버전을 확인한다. 2.2.1.2 소스 코드 다운로드 예제에 필요한 모든 자원은 깃을 통해 다운로드 받을 수 있다. git clone 2.2.1.3 기본 리소스 생성 방법 CloudFormation을 이용해 VPC 등의 기본 리소스를 생성한다. 우선 AWS 관리 콘솔 검색에서 CloudFormation을 검색한다. 그리고, 아래 사진 처럼 리전을 서울로 설정하고 스택 생성을 누른다. 아래 사진처럼 준비된 템플릿 →.. 더보기
프로그래머스 - 모음사전(Java) dfs 문제입니다. A, E, I, O, U 만을 사용하여 5자리 이내의 문자를 만들고, 정렬하여 주어지는 문자가 몇 번째인지 반환해야 합니다. 첫 번째 단어는 "A"이고, 두 번째 단어는 "AA"이며, 마지막 단어는 "UUUUU"입니다. 이 순서는 dfs(깊이 우선 탐색)을 통해 만들어지는 문자와 순서가 같습니다. 즉, dfs를 사용하여 문자를 만들고 만들어진 순서를 반환하면 됩니다. [구현 코드] import java.util.*; class Solution { final char[] WORDS = {'A', 'E', 'I', 'O', 'U'}; final int MAX_LENGTH = 5; public int solution(String word) { int answer = 0; List eleme.. 더보기
2. 쿠버네티스 환경 구축과 예제 애플리케이션 배포 - 1 2.1.1 AWS 계정과 요금 AWS 프리티어 계정을 사용할 것이고, 이용 요금은 10,000 ~ 20,000원 정도 예상된다. 2.1.2 예제 애플리케이션의 개요 이 예제 애플리케이션은 마음에 드는 장소를 등록하는 서비스다. 여기서는 장소를 표시, 등록하는 웹 애플리케이션과 장소 정보를 일괄 등록하는 배치 애플리케이션으로 구성한다. 예제 애플리케이션 구성 요소는 다음 그림과 같다. 예제 애플리케이션은 SPA(Single Page Application)의 프론트엔드와 백엔드로 구성된다. 프론트엔드는 파일을 S3(Simple Storage Service)에 저장하고, CloudFront를 통해 정적 웹 콘텐츠로 배포한다. 백엔드는 EKS 클러스터 워커노드에 컨테이너로 배포하고, RDS(Relational .. 더보기
프로그래머스 - N Queen(Java) 백트랙킹 문제입니다. N이 주어질 때, 크기가 N*N인 이차원 배열에서 N개의 퀸이 놓여질 수 있는 경우의 수를 구하는 문제입니다. 퀸은 다음과 같은 특징을 지니고 있습니다. 하나의 퀸이 놓여진 직선에는 다른 퀸이 놓여질 수 없다. 하나의 퀸이 놓여진 대각선에는 다른 퀸이 놓여질 수 없다. 퀸은 각 행과 열에서 오직 하나만 존재할 수 있기 때문에, 이차원 배열을 일차원 배열로 압축할 수 있습니다. 일차원 배열의 '행(row)'는 이차원 배열과 같이 '행(row)'을 의미하면 되고, 일차원 배열의 값은 해당 퀸이 놓여져 있는 '열(column)'의 위치를 의미하면 됩니다. 즉, 일차원 배열의 '행(row)'에 대한 값은 퀸이 놓여져 있는 '열(colimn)'을 의미합니다. // 배열의 값은 해당 행의 qu.. 더보기
프로그래머스 - 테이블 해시 함수(Java) 단순 구현 문제입니다. 주어진 조건에 맞춰 정확히 구현만 하시면 됩니다. 문제 조건을 하나씩 살펴보겠습니다. 1. 해시 함수는 col, row_begin, row_end을 입력으로 받습니다. - 입력 숫자는 1부터 시작한 다는 것만 주의하시면 됩니다. 2. 테이블의 튜플을 col번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬합니다. - Comparator만 사용할 줄 아시면 문제 조건에 맞춰 람다식 혹은 익명 함수로 구현하시면 됩니다. // 람다식 사용 int finalCol = col; Arrays.sort(data, (o1, o2) -> { if (o1[finalCol] == o2[finalCol]) return o2[0].. 더보기
프로그래머스 - 호텔 대실(Java) 누적합 문제입니다. 일반적으로 배열에 공간이 비어있는지 확인하기 위해서 0과 0이 아닌 숫자를 사용합니다. 0은 비어있다는 뜻이고, 0이 아니면 공간이 차 있다는 뜻입니다. [3, 7]까지 배열로 공간을 채워 보겠습니다. 여기서 추가로 [4, 8]까지의 공간을 채워 보겠습니다. 이렇게 연속된 공간을 채우는 방법은 일반적으로 두 번의 반복문을 사용합니다. int[] arr = new int[11]; for(int i=3; i 더보기
[쿠버네티스] 1. 컨테이너 기술 보급과 쿠버네티스 1.1 컨테이너란? 일반적인 가상머신은 호스트 OS에 하이퍼바이저(Hypervisor)를 설치하고 그 위에 게스트 OS를 동작시키는 형태로 동작한다. 컨테이너 기술은 호스트 OS에 컨테이너 런타임을 올리고 그 위에 프로그세스로서 컨테이너를 동작시킨다. 컨테이너란 호스트 OS의 커널을 공유하면서 분리된 프로세스로서 실행해 마치 가상머신이 움직이고 있는 것 처럼 보이게 하는 기술이다. 컨테이너의 실체는 단순한 프로세스이므로 가상 머신에 비해 매우 가볍고 빠르게 동작할 수 있다. 💡 컨테이너들은 호스트 OS의 커널을 공유하기 때문에, 가상머신과 달리 동립적인 운영체제를 가질 수 없다. 1.2 도커란? 1.2.1 도커의 특징과 장점 도커(Docker)는 컨테이너를 동작시키기 위한 엔진중 하나다. 도커의 가장 큰.. 더보기