전체 글 126

Jenkins를 사용하여 GitHub에서 Azure Kubernetes Service로 배포(1) - 기본환경 세팅

CI/CD 공부를 하면서 Azure는 공식문서가 잘되어있지만, 블로그 포스팅은 많이 없어서 남겨보려고 한다. Azure의 공식 실습문서를 따라하는 과정을 담은 포스트이다. 자습서 - Jenkins를 사용하여 GitHub에서 Azure Kubernetes Service로 배포 GitHub 및 CD(지속적인 배포)에서 AKS(Azure Kubernetes Service)까지의 CI(연속 통합)를 위해 Jenkins를 구성하는 방법을 알아봅니다. docs.microsoft.com 실습에서 사용하는 Azure나 Gitlab은 회원가입이 필요한데, 이러한 과정은 따로 포스팅 되어있는 글들이 많으니 회원가입이 다 되어있다고 간단한 사용법은 알고 있다는 전제로 글을 작성할 예정이다. 단, 이 문서는 Github을 기..

DevOps/CICD 2021.01.04

[BOJ 백준, 삼성 SW 역량 테스트 기출 문제] 14888번 : 연산자 끼워넣기 - Python

www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 모든 경우의 수를 전부 확인해서 원하는 답을 구하는 전형적인 완전탐색 문제였다 숫자의 위치는 고정되어있고 모든 연산자를 사용해야 하므로 연산자의 순서만 정해주면된다. 사용 할 수 있는 연산자의 순서를 정할 때는 순열을 사용한다. 연산자가 최대 10개까지밖에 없으므로 파이썬 내장 라이브러리를 활용하여 풀었다. 주의할 점은 나누기 연산의 경우 음수로 나눠지는 ..

[Kubernetes Study - 01] Introduction

쿠버네티스를 사용하는 이유 대규모 서비스를 운영하는 과정에서 최대한 자원을 효율적으로 써야 비용적으로 유리하기 때문 가상화 기술 히스토리 리눅스 자원격리 기술 : 사용하기 어려움 VM 가상화 기술 : openstack, vmware 등이 나오면서 일반 사용자 및 기업들이 많이 도입 하지만, 시스템 효율이 나지 않음. vm 가상화를 위해 무거운 OS를 띄워야하기 때문 Container 가상화기술 : dotCloud라는 회사가 컨테이너 기술을 공개하고 회사이름을 docker로 변경 후 오픈소스로 공개 컨테이너 가상화 기술은 서비스간에 자원 격리를 하는데 OS를 별도로 띄우지 않기 때문에 매우 빠르고, 자원 효율성도 높다 하지만 도커는 하나의 서비스를 컨테이너로 가상화 시켜서 배포를 하는것이지, 많은 서비스를..

DevOps/Kubernetes 2021.01.04

[BOJ 백준] 15655번 : N과 M(6) - Python

www.acmicpc.net/problem/15655 15655번: N과 M (6) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 조합을 구하는 문제이다. 순열과 달리, 사용했던 원소를 체크해주는게 관건이다. # 조합 n, m = map(int, input().split()) data = list(map(int, input().split())) data.sort() result = [] checked = [False]*n def dfs(idx, count): if count == m: print(*result) return for..

[BOJ 백준] 15654번 : N과 M(5) - Python

www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 순열을 구하는 문제이다. N과 M(1)이 순열이었는데, 이와 다른점은 N과 M(5)의 경우 순열을 만들어야 할 숫자가 따로 주어진다는 점이다. 문제 조건에서 오름차순으로 출력하라고 했기 때문에 입력받은 숫자를 정렬해주기만 하면, 일반적인 순열을 구하는 것과 동일하다 이번에도 백트래킹으로 풀었다. n, m = map(int, input().split()) data = list(map(int, input(..

[BOJ 백준] 15652번 : N과 M(4) - Python

www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net N과 M(4)는 중복 조합을 구하는 문제이다. 이번에도 내장 라이브러리를 사용하지 않고 백트래킹 방식으로 직접 구현하였다. n, m = map(int, input().split()) result = [] def dfs(idx, count): if count == m: print(*result) return for i in range(idx, n): result.append(i+1) dfs(i, count+1)..

[BOJ 백준] 15651번 : N과 M(3) - Python

www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹을 연습하기 위해 내장 함수를 사용하지 않고 직접 함수를 구현해서 문제를 풀었다 N과 M(3)는 중복순열을 구하는 문제이다. 순열을 구하는 것과 크게 차이는 없고 중복된 값을 따로 체크하지 않기 때문에 따로 체크할 부분은 없다. 소스코드 n, m = map(int, input().split()) result = [] def dfs(count): if count == m: print(*result) re..

Python 백준 문제풀이 시 입출력 정리

input() : 한 줄의 문자열을 입력 map() : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용 # 공백을 기준으로 구분된 데이터를 입력 받을 떄 data = list(map(int, input().split())) # 공백을 기준으로 구분된 데이터가 많지 않다면 a, b, c = map(int, input().split()) 파일 입출력 sys.stdin = open("input.txt", "r") 좀 더 빠르게 입력 받기 sys.stdin.readline() 사용 단, 입력 후 엔터가 사용되므로 rstrip() 를 함께 사용 import sys # 공백으로 구분된 2개 숫자 입력 받기 N, M = map(int,sys.stdin.readline().split()) # 2차원 리스트 입..

Programming/Python 2021.01.03

Python 라이브러리 정리

Counter 리스트와 같은 반복 가능한 객체가 주어졌을 때, 내부의 원소가 몇번 등장했는지 반환 from collections import Counter counter = Counter(['red', 'red', 'blue', 'green', 'blue']) print(counter['blue']) print(counter['red']) 리스트에서 맨 뒤 원소부터 확인 하고 싶을 때 음수인덱스 사용 arr = [1,2,3,4,5,6] print(arr[::-1]) # 맨 뒤에서 부터 1칸씩 print(arr[1:5:2]) # index 1부터 4까지 2칸 간격으로 진법 변환 num = '4213&..

Programming/Python 2021.01.03

Python 파이썬 기본 자료형 정리 - List

기본 문법 정리 List C++의 vector, Java의 array list와 유사 초기화 : 대괄호 사용 [ ] 인덱스 접근 가능 a = [1, 2, 3, 4] print(a[3]) # 실행결과 4 # 크기가 n이고 모든 값이 0인 1차원 리스트 초기화 n = 10 a = [0]*n print(a) # 실행결과 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Indexing 양의 정수( 맨 앞부터 시작), 음의 정수 (맨 뒤부터 시작, 맨 뒤는 -1)로 인덱싱 가능 a = [1,2,3] print(a[-1]) # 실행결과 3 연속적인 위치를 가져올 떄는 슬라이싱을 사용 : 대괄호 안에 콜론(:)을 넣어서 시작인덱스와 끝 인덱스 설정 끝 인덱스는 실제 인덱스보다 1을 더 크게 설정 a = [1,..

Programming/Python 2020.12.25