목록분류 전체보기 (493)
규도자 개발 블로그
[프로그래머스/Level2/파이썬3(python3)] 후보키 문제 프렌즈대학교 컴퓨터공학과 조교인 제이지는 네오 학과장님의 지시로, 학생들의 인적사항을 정리하는 업무를 담당하게 되었다. 그의 학부 시절 프로그래밍 경험을 되살려, 모든 인적사항을 데이터베이스에 넣기로 하였고, 이를 위해 정리를 하던 중에 후보키(Candidate Key)에 대한 고민이 필요하게 되었다. 후보키에 대한 내용이 잘 기억나지 않던 제이지는, 정확한 내용을 파악하기 위해 데이터베이스 관련 서적을 확인하여 아래와 같은 내용을 확인하였다. 관계 데이터베이스에서 릴레이션(Relation)의 튜플(Tuple)을 유일하게 식별할 수 있는 속성(Attribute) 또는 속성의 집합 중, 다음 두 성질을 만족하는 것을 후보 키(Candidat..
[프로그래머스/Level2/파이썬3(python3)] 괄호 회전하기 문제 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. (), [], {} 는 모두 올바른 괄호 문자열입니다. 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다. 대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 ..
[프로그래머스/Level2/파이썬3(python3)] 게임 맵 최단거리 문제 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 위 그림에서 검은색 부분은 벽으로 막혀있어 갈 수 없는 길이며, 흰색 부분은 갈 수 있는 길입니다. 캐릭터가 움직일 때는 동, 서, 남, 북 방향으로 한 칸씩 이동하며, 게임 맵을 벗어난 길은 갈 수 없습니다. 아래 예시는 캐릭터가 상대 팀 진영..
[프로그래머스/Level2/파이썬3(python3)] 땅따먹기 문제 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다. 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution ..
[프로그래머스/Level2/파이썬3(python3)] 압축 문제 신입사원 어피치는 카카오톡으로 전송되는 메시지를 압축하여 전송 효율을 높이는 업무를 맡게 되었다. 메시지를 압축하더라도 전달되는 정보가 바뀌어서는 안 되므로, 압축 전의 정보를 완벽하게 복원 가능한 무손실 압축 알고리즘을 구현하기로 했다. 어피치는 여러 압축 알고리즘 중에서 성능이 좋고 구현이 간단한 LZW(Lempel–Ziv–Welch) 압축을 구현하기로 했다. LZW 압축은 1983년 발표된 알고리즘으로, 이미지 파일 포맷인 GIF 등 다양한 응용에서 사용되었다. LZW 압축은 다음 과정을 거친다. 길이가 1인 모든 단어를 포함하도록 사전을 초기화한다. 사전에서 현재 입력과 일치하는 가장 긴 문자열 w를 찾는다. w에 해당하는 사전의 색..
macOS에서 ELK stack 구성하기 (elasticsearch) 그냥 brew install로 무지성 설치를 하려니 안되더라. 해서 내가 삽질한 내용과 더불어 다른 사람들은 헤매지 않길 바라며 기록해둘 요량이다. 먼저 현재(2022년 2월 27일) brew search elasticsearch 하면 나오는 내용이다. $ brew search elasticsearch ==> Formulae elasticsearch elasticsearch@6 ShellCopy 깔아보자. $ elasticsearch -V warning: no-jdk distributions that do not bundle a JDK are deprecated and will be removed in a future release W..
과연 여기서 말하는 강한 온도는 높은 온도를 의미하는 것인가, 낮은 온도를 의미하는 것인가. 숫자가 온도를 의미하는 것인가 아니면 강도를 의미하는 것인가. 여기서 강도를 의미하는 것이라면 높은게 강도가 높은 것인가 낮은게 강도가 높은 것인가. 또 이 강도가 높은 게 온도가 높은 것인가, 강도가 낮은 게 온도가 높은 것인가. 온도를 강하게 하려면 저 화살표 방향으로 돌리라는 것인가 아니면 상단의 화살표가 거기에 존재할 때 온도가 강하게 설정돼있다는 것인가. 진짜 그 어떤 정보도 도움이 되지 않는 최악의 UI가 아닐까. 결국엔 UX로 해결해야한다. 성에제거가 곧 높은 온도를 의미하는 것이니 온도를 낮추려면 성에제거로 갈 수 있는 방향의 반댓방향으로 돌리면 되고, 온도를 높이려면 성에제거방향으로 가면 된다.
django로 github actions찍먹해보기 github actions라고 요즘 핫한 친구가 있다. 간단하게 말하자면 github actions를 설정한 저장소에 특정 이벤트가 일어나면(push를 했을 때나 정해진 시간 등) 정해놓은 워크플로우를 자동으로 실행하게 해주는 기능이다. 일종의 CI/CD작업을 깃허브에서 실행하게 만들 수도 있는 셈이다. 그래서 보통 jenkins에서 수행하던 CI작업을 github actions로 많이 옮기는 추세이다. 허나 완전한 무료는 아니라는 걸(2,000 Actions minute/month FREE) 알아둬야 한다. github에서 직접 지원하는 기능일 뿐더러 build, test, package, release, deploy 등 다양한 이벤트를 기반으로 직접 ..
[macOS] kubectl, kustomize, minukube설치하기 $ brew install kubectl kustomize minikube $ kubectl version Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"darwin/amd64"} Server Version: version.Info{Major:"1", Minor:"22"..
gmail에는 여러 용도로 사용할 수 있게 아이디 뒤에 +{something}을 붙여서도 사용할 수 있는 기능이 있다. 예를 들어 내 이메일주소가 jujumilk3@gmail.com인데 여기에 jujumilk3+2022@gmail.com을 붙여도 내 원래 계정으로 온다. 이렇게 말이다. 물론 숫자뿐만이 아니라 영어도 되므로 특정 메일을 리스팅하거나 라벨링할 때 쓰기 좋은 기능이지만 이 기능을 aws계정가입과 함께 활용하면 같은 gmail계정으로 여러개의 프리티어계정을 계속 생성할 수 있다. 프리티어계정은 1년 후에 종료되기 때문에 나 같은 경우에는 뒤에 해당년도를 붙여 새로운 계정을 만들어 사용하고 있다. 이렇게 가입시도를 하면 멀쩡히 잘 진행된다. 프리티어 기능을 정상적으로 사용할 수 있다는 확인메일이..