전체 글 784

[Docker] 도커(Docker)란?

도커(Docker)란? 도커란?도커는 애플리케이션을 컨테이너라는 표준화된 유닛으로 패키징, 배포, 실행할 수 있게 해주는 오픈 소스 플랫폼이다. 컨테이너를 사용하여 개발자 및 고객에게 일관된 환경을 제공하며, 애플리케이션의 배포와 관리를 단순하게 한다. 도커는 동일한 컨테이너라면 항상 동일한 환경을 제공하기 때문에 사용자에게 일관된 경험을 제공할 수 있다. 따라서 애플리케이션을 실행하는 데 필요한 특정 버전의 라이브러리나 기타 도구를 직접 설치하지 않아도 된다. 컨테이너란?컨테이너는 애플리케이션을 실행하기 위한 코드와, 종속적인 도구가 모두 포함되어 있는 표준화된 소프트웨어 유닛을 의미한다. 만약 NodeJS 애플리케이션을 도커로 빌드하여 컨테이너화 한다면, 이 컨테이너엔 애플리케이션을 실행하기 위한 코..

Dev/CICD 2024.06.14

[Lv.3 / 프로그래머스 / 파이썬] 산 모양 타일링 (2024 KAKAO WINTER INTERNSHIP)

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr ↓ 문제 열기더보기   풀이 제한사항 100,000 및 타일 문제이므로 DP를 활용해야 함을 쉽게 유추할 수 있다.어떤 점화식을 도입할 수 있을지 살펴보도록 하자.  tops 의 원소가 하나 추가될 때, 회색 부분은 기존(dp[n-1])의 모든 경우의 수가 고려된 부분이므로 흰 부분에 대해서 타일링을 채우는 방법을 고민해야 한다. 흰 부분은 다음과 같은 방법으로 채울 수 있다.  따라서 tops에 따라 총 3가지 경우의 수로 구분할 수 있다(현재 고려할 top 이 0이라면, 세 번째 경우는 제외하면 된다).  하..

[Lv.2 / 프로그래머스 / 파이썬] 다음 큰 숫자

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 숫자를 하나씩 올려갈 때, 이진수로 변환 시 1의 개수가 일치하는 것을 찾으면 된다. def solution(n): ans = n num1 = bin(n).count("1") while True: ans += 1 if num1 == bin(ans).count("1"): break return ans

[Lv.2 / 프로그래머스 / 파이썬] 이모티콘 할인행사 (2023 KAKAO BLIND RECRUITMENT)

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 각 이모티콘의 할인율을 적절하게 정하여 최대의 이모티콘 플러스 가입자를 유치하고, 그 때 최대의 이익을 출력해야 한다.  알고리즘이 필요하다기 보다는 단순무식한 구현 문제였다. 완전탐색으로 문제를 해결하려고 할 때, 제한 사항이 시간복잡도를 만족하는지 확인해보자.  이모티콘의 총 길이는 7이고 할인율은 10, 20, 30, 40 총 4개이다. 그리고 최대 유저는 100명이다. 이 때 생각할 수 있는 완전탐색 알고리즘은 다음과 같다. 존재할 수 있는 모든 할인율의 조합을 이모티콘의 길이만큼 구한다.할인율의..

[Lv.2 / 프로그래머스 / 파이썬] 올바른 괄호

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 대표적인 스택 문제이다. 알고리즘은 다음과 같다. 괄호를 순회하며 다음의 규칙을 수행한다.현재 순회하는 괄호가 ( 라면 스택에 넣는다현재 순회하는 괄호가 ) 라면 다음의 규칙을 수행한다.스택에 ( 괄호가 없다면 올바르게 짝지을 수 없으므로 False를 반환한다.스택에서 ( 괄호를 꺼내 짝지어준다(없앤다)순회가 끝났다면 다음의 규칙을 수행한다.스택에 남아있는 괄호가 없다면 모든 괄호가 올바르게 짝지어진 것이므로 True를 반환한다.스택에 괄호가 남아있다면 짝을 지어주지 못한 괄호가 있는 것이므로 False..

[Lv.2 / 프로그래머스 / 파이썬] 2 x n 타일링

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 2 x n 의 공간이 주어질 때 2 x 1 의 타일을 놓는 경우의 수를 구해야 하는 동적 계획법 문제이다.n이 1 증가할 때 타일을 놓는 방법은 다음과 같다. dp[n]일 때의 경우에 세로로 타일을 놓는다dp[n-1]의 경우에 가로로 2칸짜리 타일을 놓는다 따라서 점화식은 dp[n] = dp[-1] + dp[-2] 이다. def solution(n): dp = [0, 1, 2] for i in range(n - len(dp) + 1): dp.append((dp[-1] + dp[-2..

[Lv.1 / 프로그래머스 / SQL] 잡은 물고기 중 가장 큰 물고기의 길이 구하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 가장 큰 물고기의 길이를 출력하되, 소수점 두 자리까지 표시해야 하며 cm을 붙여 출력해야 한다.소수점 자리 표시는 FORMAT 함수로 가능하고, 문자열을 연결하여 출력하기 위해 CONCAT 함수를 사용한다. SELECT CONCAT(FORMAT(MAX(LENGTH), 2), 'cm') AS MAX_LENGTHFROM FISH_INFO

[🥇2 / 백준 3109 / 파이썬] 빵집

3109번: 빵집유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던www.acmicpc.net 문제유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다.원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 중에, 가스비가 제일 크다는 것을 알게되었다. 따라서 원웅이는 근처 빵집의 가스관에 몰래 파이프를 설치해 훔쳐서 사용하기로 했다.빵집이 있는 곳은 R*C 격자로 표현할 수 있다. 첫째 열은 근처 빵집의 가스관이고, 마지막 열은 원웅이의 빵집이다.원웅이는 가스관과 빵집을 연결하는 파이프를 설치하려고 ..

[Effective Java : Item 90] 직렬화된 인스턴스 대신 직렬화 프록시 사용을 검토하라

개요 Serializable을 구현하기로 결정했다는 것은, 언어의 정상 메커니즘인 생성자 사용을 우회하여 인스턴스를 생성할 수 있게 된다는 것이다. 이로 인해, 버그와 보안 문제가 발생할 가능성이 일어날 가능성이 커지는데, 직렬화 프록시 패턴(serializable proxy pattern)을 통해 이를 크게 줄일 수 있다.   직렬화 프록시 패턴 사용법 * Proxy의 사전적 정의는 "대리", "대리인"을 의미 직렬화 프록시 패턴을 간략하게 요약하자면, 직렬화된 코드를 그대로 클래스의 인스턴스로 생성하는 것이 아니라, 그 클래스와 논리적 상태가 동일한 중첩 클래스를 설계해 방어적 생성을 하는 것이다.  직렬화 프록시 패턴을 구현하는 방법은 다음과 같다. 바깥 클래스의 논리적 상태를 정밀하게 표현하는 중..

Dev/Java 2024.05.22

[Lv.1 / 프로그래머스 / 파이썬] 대충 만든 자판

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    풀이 알파벳마다 자판 상관 없이 가장 빨리 누를 수 있는 자판을 선택하는 것이 최선의 선택일 것이다.따라서 주어진 자판을 순회하며 알파벳마다 가장 빨리 누를 수 있는 횟수를 딕셔너리에 기록한다. 이후, targets의 문자열을 순회하며 딕셔너리를 이용해 문자열을 입력할 수 있는 가장 짧은 입력 횟수를 구한다. def solution(keymap, targets): # 알파벳별 가장 빨리 입력할 수 있는 횟수 계산 d = dict() for keys in keymap: for ke..

반응형