분류 전체보기 1190

[BOJ] 1748 - 수 이어 쓰기 1

문제 https://www.acmicpc.net/problem/1748 첫째줄에 N을 입력받아, 1부터 N까지의 수를 이어서 쓴 하나의 수의 자릿수를 구하여라. 예시) n = 15 이어쓴 수 : 123456789101112131415 자릿수 : 21 풀이 틀린 풀이 N까지 이어서 쓴 수를 실제로 구한 뒤, 그 길이를 출력하는 방법을 썼다. import sys n = int(sys.stdin.readline()) print(len("".join([str(i) for i in range(1, n + 1)]))) 무식한 방법이었는지, 메모리 초과로 틀린 풀이였다. 맞은 풀이 i번째 자리수가 등장하는 개수와 N과의 관계를 생각해보자. 자릿수 범위 개수 1번째 (1의 자릿수) 1 ~ N N - 1 + 1 2번째 ..

Algorithm/백준 2022.04.21

[Python] 익명 함수 - lambda 표현식

def 리터럴 표기법에 따라 함수를 생성할 때 사용되는 키워드 def 키워드는 함수 클래스를 통해 함수 객체를 생성하고, 객체를 함수 이름과 같은 변수에 담는 과정을 담당한다. 변수에 담긴 함수 객체는 메모리에 올라가서 호출을 대기하는데, 이는 한 번만 사용될 함수라면 메모리 낭비에 해당된다. 한 번만 사용될 함수라면 익명함수를 사용하는 것이 좋다. 익명 함수 이름이 없는 함수를 뜻하며, Python에서는 lambda라는 키워드를 이용해 익명 함수를 정의할 수 있다. 이름이 없어 재사용이 불가능하다. 다만 일반 함수와 동일하게 변수에 할당될 수 있기 때문에, 변수에 저장된 lambda 함수는 재사용이 가능하다. lambda lambda 키워드를 이용한 함수는 람다 함수 또는 람다 표현식이라고 한다. la..

Python 2022.04.20

[VSCode] jupyter notebook 사용

VSCode는 python 개발 환경으로 많이 사용되지만, 데이터 분석 관련으로는 아무래도 jupyter notebook과 jupyterlab이 많이 사용된다. 즉, jupyter notebook도 새로 설치를 하게 되는데, VScode의 관련 확장 프로그램 몇 가지를 설치하면 VSCode 상에서도 jupyter notebook을 사용할 수 있게 된다. 설정 방법을 정리해둔다. 방법 1. VSCode 설치 아래의 링크에서 환경에 맞는 버전을 다운받아 설치한다. https://code.visualstudio.com/download Download Visual Studio Code - Mac, Linux, Windows Visual Studio Code is free and available on your ..

Python 2022.04.19

[diff] 파일 내용 비교

diff 리눅스 기본 명령어 중 하나로, 파일을 한 줄씩 비교하여 출력한다. 출력 값이 없으면 두 파일이 동일하다는 의미이다. 3개의 파일을 한 번에 비교하고 싶다면 diff3 명령을 사용할 수 있다. 명령어 일반적으로 기준이 되는 파일을 먼저 나열한다. diff [OPTION]... FILES # 예시 diff old.txt new.txt 예시) 3번째 줄과 5번째 줄이 변경된 것을 알 수 있다. 로 시작하는 행은 new.txt의 내용이다. 즉, fff가 fox로 변경되고, tiger라는 문자열이 추가된 것을 확인할 수 있다. 아무런 옵션 없이 사용하면 변경된 내용만을 확인할 수 있는데, -u 옵션을 사용하면 변경된 내용과 변경되지 않은 내용을 한 번에 확인할 수 있다. diff -u FILES # -..

Linux 2022.04.18

[k8s] Static Pod 종료/재시작

Static Pod kubelet에서 apiserver의 요청과는 관계없이 특정 디렉터리 내의 pod yaml 정의서를 이용해 직접 생성하는 pod apiserver와 무관하게 생성된다는 것 외에는 일반 pod와 동일하며, 특정 노드의 kubelet 데몬에 의해 관리된다. kubeadm으로 쿠버네티스 클러스터를 구축하는 경우에는, 마스터 노드의 /etc/kubernetes/manifest 경로를 바라본다. 대표적으로 apiserver, etcd, scheduler, controller가 해당된다. Static Pod는 이름에 node 이름이 포함된다. Static Pod 종료 방법 /etc/kubernetes/manifest 경로에 종료할 pod의 yaml 파일을 제거하면 된다. mv /etc/kuber..

Kubernetes 2022.04.17

[kubeadm] 쿠버네티스 인증서 수동 갱신

개요 kubernetes 인증서는 1년의 유효기간을 갖고 있으므로 매년 갱신이 필요하다. 이 글에서는 kubeadm으로 구성된 쿠버네티스 클러스터 인증서 갱신 방법을 정리해둔다. 인증서 갱신 방법 1. 인증서 유효기한 확인 kubeadm alpha certs check-expiration # 또는 kubeadm certs check-expiration 2022년 4월 10일에 대부분의 인증서가 만료되는 것을 확인할 수 있다. 2. 인증서 등 설정 백업 인증서 갱신이 원활하지 않을 경우를 대비하여 원하는 경로에 설정 파일 등을 백업해둔다. 실제 인증서 관련 디렉터리는 /etc/kubernetes/pki이다. # kubernetes 설정 백업 cp -rp /etc/kubernetes /etc/kubernet..

Kubernetes 2022.04.16

[cordon] 스케쥴링 불가 노드로 설정

쿠버네티스 클러스터 노드 중 하나가 물리적으로 고장나면서, 클러스터 내에서는 NotReady 상태로 표시되고 있는 것을 확인했다. Node 정보를 상세히 확인하니, node.kubernetes.io/unreachable:NoSchedule Taint가 설정되면서 스케쥴링 가능 노드에서 제외되는 것으로 보였다. 하지만 좀 더 명확하게 고장난 노드(node01)가 스케쥴링이 불가능한 노드로 설정해두고자 한다. cordon 노드를 unschedulable로 표시한다. kubectl cordon # 예시 kubectl cordon node01 Node 상세 정보 Unschedulable 필드가 true로 변경되고, Taint 설정도 추가된 것을 확인할 수 있다. Uncordon unschedulable 상태인 ..

Kubernetes 2022.04.15

[Redmine on AWS] AutoScailing

AutoScailing 애플리케이션의 로드를 처리할 수 있는 EC2 인스턴스 개수를 유지한다. AutoScailing Group이라고 하는 EC2 인스턴스 모음에 최소 인스턴스 개수와 최대 인스턴스 개수를 지정하여, 그룹의 크기가 지정된 인스턴수 개수의 범위를 벗어나지 않도록 조정한다. 크기가 줄어들거나 커지는 규칙은 조정 정책에 따라 결정된다. 예로 들어 AutoScailing Group에 인스턴스 최소 개수를 1개, 최대 개수를 4개, 원하는 개수를 2개로 설정하는 경우, 기본적으로 AutoScailing Group은 2개의 인스턴스를 유지한다. 그리고 부하에 따라 최소 1개부터 4개까지 인스턴스 개수가 조정될 수 있다. 서비스의 고가용성을 유지하기 위해 Web Server와 WAS에 AutoScai..

[Conda] 개념 및 기본 명령어

conda Python, R, Ruby, Lua, Scala, Java, Javascript, C/C++. FORTRAN 등 언어의 의존성과 패키지, 환경을 관리하는 도구 Windows, macOS 및 Linux에서 실행할 수 있는 오픈 소스 패키지 및 환경 관리 시스템 환경을 쉽게 생성하고, 전환할 수 있으며 패키지와 의존성 패키지를 설치하고 업데이트할 수 있다. 또한 소프트웨어를 패키징하고 배포할 수도 있다. 기본적으로 repo.anaconda.com에 저장된 패키지를 설치하고 관리한다. Conda는 Anaconda와 Miniconda에 포함되어 있으며, conda-forge에서도 사용할 수 있다. Anaconda 머신러닝이나 데이터 분석 등에 사용하는 패키지가 기본적으로 포함되어 있는 파이썬 배포판..

Python 2022.04.13

[filter] 문자열에서 알파벳 추출

문자열 데이터에서 알파벳만 추출하려고 한다. Python 내장 함수 중 하나인 filter 함수를 사용해서 처리해보고자 한다. filter 여러 개의 데이터로부터 특정 데이터만 추릴 때 사용하는 함수로, 주로 list나 tuple을 대상으로 사용한다. filter(function, iterable) function은 데이터를 추리는 조건에 해당하는 함수이다. 직접 정의해서 사용해도 되지만 lambda 함수를 활용할 수도 있다. iterable에는 순회할 수 있는 데이터가 들어간다. list, tuple, set, string 등이 해당될 수 있다. 예시) inp = "abcd123456efghi!@#$" print(filter(str.isalpha, inp)) for i in filter(str.isal..

Python 2022.04.12