본문 바로가기

분류 전체보기

(15)
[알고리즘] 런너(Runner) 기법 (링크드 리스트 문제 풀기) 런너(Runner) 기법이란?런너(Runner) 기법은 링크드 리스트를 검색할 때 속도가 다른 2개의 포인터를 사용하는 기법입니다. 예를 들어 한 포인터가 한 칸을 이동할 때 다른 포인터는 두 칸을 이동하는 방법이 있습니다. 이 기법을 이용하면 링크드 리스트의 중간 위치나 특정 조건의 길이를 판단할 때 유용하개 사용 할 수 있습니다. 링크드 리스트의 가운데 노드> 포인터를 런너(Runner)라고 설명하겠습니다. 한 칸씩 이동하는 느린 런너(Slow Runner)와 두 칸씩 이동하는 빠른 런너(Fast Runner)가 있다고 가정하겠습니다. 끝을 알 수 없는 어느 링크드 리스트에서 위 방법을 빠른 런너(Fast Runner)가 리스트의 끝까지 도달했다면 느린 런너(Slow Runner)는 링크드 리스트의 ..
wget 명령어 사용 방법 wget`wget`은 웹에서 파일을 다운로드할 때 사용하는 명령어입니다. http, https, ftp 프로토콜을 이용할 수 있습니다. 비슷한 명령어로는 `curl`이 있습니다. O 옵션`-O` 옵션을 이용해 파일 이름을 지정할 수 있습니다. wget http://example.com -O example.tar.gz이 옵션을 이용하면 같은 이름의 파일을 덮어쓸 수 있기 때문에 주의해야 합니다. c 옵션`-c` 옵션을 이용해 다운로드 중 어떠한 오류로 중단된 파일을 이어서 받을 수 있습니다. wget http://example.com -cb 옵션`-b` 옵션을 이용햐 백그라운드에서 파일을 다운로드할 수 있습니다. user-agent 옵션`—user-agent` 옵션을 이용하여 요청 헤더에 사용자 에이전트 ..
[Python] 파이썬 all() 사용 방법 all()파이썬 `all()`함수는 모든 것이 참 인지 확인하는 함수입니다. 예를 들어 모든 수가 양수인지 확인하려면 다음과 같이 이용할 수 있습니다. all([0 < i for i in [1, 2, 3]]) # True all([0 < i for i in [-1, 0, 1]]) # False작동 원리`all()`함수는 다음과 같이 정의되어 있습니다. def all(iterable): for element in iterable: if not element: return False return True 이를 통해 2가지를 알 수 있습니다. 1. `1, hello, 3 == 3`등 형변환 후 True가 된다면 True를 반환합니다. 2. 중간에 거짓 값이 있다면 작동을 멈추고 False를 반환합니다. 1번부..
파이썬에서 큐(queue) 사용하기(deque 사용법) deque`deque`는 `list`객체와 유사하지만 `list`는 데이터 크기가 고정되어 있을 때 최적화 되어 있어서, 하부 데이터를 변경하는 `pop(0)`과 `insert(0, v)`연산을 하는데 많은 비용(`O(n)`)이 소모됩니다. 이에 반해 `deque`는 객체의 양쪽 끝 에서의 추가(append)와 팝(pop)을 낮은 비용(`O(1)`)으로 지원하는 객체입니다. 선언`deque`는 `collections`모듈의 하위 객체입니다. from collections import deque `deque`는 다음과 같이 생성할 수 있습니다. deque(데이터, 최대 길이) 데이터가 비어있는 경우 비어있는 `deque`를 반환합니다. 최대 길이 인자를 이용해 `deque`의 최대 길이를 제한할 수 있으며..
[Python] isdigit() 사용 방법 isdigit()`isdigit()`는 `string`클래스의 하위 메서드로 문자열이 숫자로 이루어져 있는지에 대한 참/거짓 값을 반환합니다. 사용방법1. “Hello, world!”.isdigit() 2. str.isdigit(“Hello, world!”) 위 두 가지 방법을 통해 사용할 수 있습니다. 동작`isdigit()`는 0과 양의 정수만 숫자로 판단합니다. 예를 들어 음수의 `-` 부호나 소수의 소수점은 특수문자로 인식하기 때문에 거짓을 반환합니다.
[Docker] docker ps 명령어 사용 방법 `docker ps` 명령어는 컨테이너 목록을 출력하는 명령어입니다. 이 명령어를 통해 어떤 컨테이너가 동작하고 있는지 크기는 어떤지 알 수 있습니다. 이 명령어를 더 효율적으로 사용하기 위해 옵션에 대해 자세히 알아보겠습니다. —all, -a`—all`이나 `-a`를 이용하면 정지된 컨테이너를 포함한 모든 컨테이너를 볼 수 있습니다. —filter, -f`—filter`옵션은 말 그대로 필터를 이용해 컨테이너를 검색할 수 있습니다. 사용 방법은 `key=value` 형식입니다. 자세한 방법은 다음을 참고해 주세요. https://docs.docker.com/engine/reference/commandline/ps/#filter docker psdocker ps: List containersdocs.do..
[Python] List 사용 방법 append(x)리스트의 끝에 항목을 추가할 때 사용합니다. l = [1, 2, 3] l.append(4) print(l) # [1, 2, 3, 4]extend(iterable)리스트의 끝에 이터러블의 항목을 이어 붙입니다. l = [1, 2, 3] l.extend([4, 5]) print(l) # [1, 2, 3, 4, 5] 위에서 설명한 append와 비슷하지만 append는 분명한 차이점이 있기 때문에 주의해야 합니다. 위와 같은 경우 `extend`대신 `append`를 이용한다면 `[4, 5]`가 통채로 리스트 뒤에 추가됩니다. l = [1, 2, 3] l.append([4, 5]) print(l) # [1, 2, 3, [4, 5]]insert(i, x)주어진 위치에 항목을 삽입하는 함수입니다...
[Docker] Docker 권한 오류(permission denied) 해결 Permission DeniedDocker을 처음 실행하면 permission denied 오류가 발생합니다. permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied `sudo`를 이용해 해결할 수 있지만 권장하지는 않습니다. Docker Group 추가하기이 문제를 해걀하기 위해서 사용자를 docker 그룹에 추가하여야 합니다. sudo usermod -aG do..
[Docker] Docker 설치 (Ubuntu 22.04) 스크립트 이용다음과 같은 명령어를 통해 한 줄로 Docker을 설치할 수 있습니다.wget -qO- https://get.docker.com | sh 이 방식은 편리하지만, 프로덕션 환경으로는 적합하지 않습니다. 개발 환경에 Docker를 간단하게 설치하고 싶다면 이 방법을 사용할 수 있습니다. 설치 방법레포지터리 추가1. 필수 패키지 설치sudo apt-get update sudo apt-get install ca-certificates curl gnupg 2. Docker 공식 GPG키 추가sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor ..
[알고리즘] 슬라이딩 윈도우(Sliding Window) 슬라이딩 윈도우 방법슬라이딩 윈도우 방법은 여러 번의 반복을 하나의 반복으로 줄이는 것을 목적으로 하는 방법입니다. 예를 들어 자전거 체인에 기름칠을 할 때 체인 하나하나에 기름을 바르는 것이 아니라 천을 기름에 적신 후 천을 대고 체인을 돌리면 쉽게 바를 수 있습니다. 사용 예시어떤 리스트 `arr`이 주어 젔을 때 연속된 3개 요소의 최대 합을 구하는 문제가 있다고 가정하겠습니다. 입력: `arr = [3, 5, 7, 5, 3, 2]` 출력: 17 풀이: 3 + 5 + 7 = 15 5 + 7 + 5 = 17 7 + 5 + 3 = 15 … 이므로 17이 최대 합입니다. 만약 이를 일반적으로 푼다면 다음과 같이 풀 수 있을 것입니다. arr = [3, 5, 7, 5, 3, 2] max_sum = -inf..