분류 전체보기 1187

[자료구조] deque - 양방향 큐

개요 예전에 Python에서 큐를 다루는 방법을 소개하고자 2021.10.07 - [자료 구조] 회문 찾기 / 큐 & 스택을 작성했었는데, 찾아보니 deque라는 자료구조가 따로 존재해 내용을 적어둔다. 양방향 큐 (deque) Queue는 먼저 저장한 자료를 먼저 빼내는 선입선출(First In First Out; FIFO) 방식의 자료구조다. REAR에서민 자료를 추가하고 FRONT에서만 자료를 삭제하기 때문에 방향을 구분하지 않는다. 반면 양방향 큐(Double-Ended Queue; deque)는 그 이름대로 데이터의 추가와 삭제가 FRONT, REAR 모두에서 이뤄진다. 즉, FIFO나 후입선출(Last In First Out; LIFO)를 따르지 않는다. Deque는 기본적으로 동적 배열을 사..

자료구조 2023.10.18

[Python] Asterisk(*)

AsteriskPython 코드를 찾아보면 Asterisk(*)를 사용하는 모습을 많이 볼 수 있는데, Python에서 Asterisk는 곱셉 연산 외의 여러 기능을 제공한다.이 글에서는 Asterisk로 어떤 연산을 할 수 있는지 정리해 둔다.    곱셉, 거듭제곱Python에서 Asterisk는 곱셈 연산을 할 때 사용할 수 있다. 또 Asterisk를 연달아 사용해(**) 거듭제곱 연산을 할 수 있기도 하다.2 * 32 ** 3  interable 데이터 반복리스트와 같은 반복 가능한 데이터를 반복적으로 확장하는 용도로 사용할 수 있다.print([i for i in range(3)] * 2)print((1, 2, 3) * 2)  interable 데이터 unpacking함수 호출 시 매개변수로 반..

Python 2023.10.17

[프로그래머스] 괄호 회전하기

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/76502 다음 규칙을 지키는 문자열을 올바른 괄호라고 정의한다. (), [], {}는 올바른 괄호다. A가 올바른 괄호면 (A), [A], {A}도 올바른 괄호다. []가 올바른 괄호 문자열이므로, ([])도 올바른 괄호다. A, B가 올바른 괄호면 AB도 올바른 괄호다. {}와 ([])가 올바른 괄호이므로, {}([]) 도 올바른 괄호다. 대괄호, 중괄호, 소괄호로 이루어진 문자열 s가 매개변수로 주어질 때, s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 반환하라. 풀이 매개변수 s의 길이가 1000 이하로 제..

Algorithm 2023.10.16

[Python] 두 리스트를 딕셔너리로 만들기

개요 코딩 테스트 문제를 풀다 보면 입력 데이터로 서로 관계가 있는 두 개의 리스트가 주어질 때가 많은데, 이런 케이스는 딕셔너리로 데이터를 묶어서 처리하곤 한다. 이 글에서는 두 리스트 내 원소를 키-값으로 하는 딕셔너리를 만드는 방법을 간단히 정리한다. 예시로, 사고자 하는 물건과 그 수량을 각각 want, number라는 리스트에 저장해 두었다고 하자. want = ["banana", "apple", "rice", "pork", "pot"] number = [3, 2, 2, 2, 1] 이 두 리스트를 이용해 물건을 키로 하고 그 수를 값으로 하는 딕셔너리를 만들고자 한다. 딕셔너리 컴프리헨션 딕셔너리 컴프리헨션을 이용하면 아래와 같은 방식으로 만들 수 있다. want = ["banana", "app..

Python 2023.10.13

[프로그래머스] 멀리 뛰기 - 같은 것이 있는 순열

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12914 멀리 뛰기를 연습하는 효진이는 한 번에 1칸 또는 2칸을 뛸 수 있다. 예로 들어 칸이 4개라면 효진이는 (1칸, 1칸, 1칸, 1칸), (1칸, 2칸, 1칸), (1칸, 1칸, 2칸), (2칸, 1칸, 1칸), (2칸, 2칸)의 5가지 방법으로 맨 끝에 도달할 수 있다. 멀리뛰기에 사용될 칸의 수 N이 주어질 때 효진이가 끝에 도달하는 방법이 몇 가지인지 알아낸 후, 그 값을 1234567로 나눈 나머지를 반환하라. 같은 것이 있는 순열 이해하기 편하게 예시를 들어 설명한다. \(a, b, c, d, e\) 를 일렬로 나열하는 방법의 수는 \(5!\)이 된다. 그렇다면 \(a..

Algorithm 2023.10.12

[Shell Script] 데이터 타입과 Test 명령

Shell 데이터 타입과 test 명령 Shell에는 숫자와 문자를 구분하는 데이터 타입이 없고, 사칙연산을 위한 연산자도 없다. 명령문을 구성하는 모든 것은 문자열이고, 산술 연산은 확장이나 명령을 통해 제공된다. 즉, 32와 "32"는 동일하다. 또한 문자열을 다루는 부분에서는 문자열로, 산술 연산을 다루는 부분에서는 숫자로 사용된다. test 명령은 shell Script 작성 시 빠지지 않고 등장하는 표현식으로 보통 조건문에 많이 사용한다. test와 [는 같은 명령이다. test -d /etc; echo $? [ -d /etc ]; echo $? Shell에서 test 명령을 사용할 때는 다음과 같은 점을 주의해야 한다. test 명령 사용 시 주의점 1. 변수 비교 시 qoute 처리 필요 t..

Linux/Shell Script 2023.10.11

[프로그래머스] 연속 부분 수열 합의 개수

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131701 수열을 갖고 놀기 좋아하는 철호는 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 모두 몇 가지인지 알고 싶어졌다. 원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말한다. 예를 들어 수열 [7, 9, 1, 1, 4]로 원형 수열을 만들면 다음과 같다. 원형 수열은 처음과 끝이 연결되어있어 연속하는 부분 수열도 일반 수열보다 많다. 원형 수열의 원소 elements가 주어질 때, 원형 수열의 연속 부분 수열의 합으로 만들 수 있는 수의 개수를 반환하라. 풀이 1 프로그래밍적으로 원형 수열을 다룰 때는 인덱스를 리스트 길이로..

Algorithm 2023.10.11

[Python] Counter - 데이터 수 확인

개요 평소 어떤 리스트 내 원소가 나타난 수를 셀 때 다음과 같은 방식으로 셌었는데, Python의 Counter 클래스를 사용하면 편하게 데이터의 수를 셀 수 있다고 한다. tangerine = [1, 3, 2, 5, 4, 5, 2, 3] for i in tangerine: if i not in t_group: t_group[i] = 0 t_group[i] += 1 사용방법을 정리해 둔다. Counter 란 사용하고자 하는 클래스는 collections 모듈의 Counter 클래스로, 해시 가능한 객체를 카운트하기 위한 딕셔너리 하위 클래스이다. 원소가 키(key)고, 원소의 개수가 값(value)인 딕셔너리로 저장된다. 값에는 0과 음수를 포함한 모든 정수가 허용된다. 임포트 추가 패키지 설치 없이 ..

Python 2023.10.10

[Linux] newgrp - 재로그인 없이 그룹 적용하기

개요 일반 사용자가 도커를 사용할 수 있도록 그룹을 추가했는데, 해당 설정은 바로 적용되지 않고 재로그인을 해야 적용된다. 스크립트로 환경을 세팅하면서 도커도 사용할 수 있었으면 싶어 재로그인 없이 그룹을 적용하는 방법은 없는지 확인해 봤는데, 방법 자체는 존재했다. 바로 newgrp 명령을 사용하는 방법이다. newgrp 사용자의 GID를 변경하는 명령어로, 사용하면 새로운 쉘을 실행하고 사용자의 그룹을 매개변수 group으로 지정한 그룹으로 변경한다. 기본적으로 newgrp 명령은 /etc/passwd에 지정된 그룹으로 변경한다. newgrp [ - ] [ -l] [ Group ] # 예시 newgrp docker newgrp 명령은 GID가 아니라 그룹의 이름만을 인식하고, 변경된 사항은 해당 세션..

Linux 2023.10.09

[aws cli] NLB - 인스턴스 등록/해제

개요 2022.12.19 - [aws cli] Classic LB - 인스턴스 등록/해제에서 aws cli로 CLB에 인스턴스를 등록하고 삭제해 봤는데, 이번 글에서는 NLB를 대상으로 인스턴스를 등록하고 해제하는 명령어를 적어둔다. 참고로 aws cli로 NLB나 ALB를 다룰 때는 elbv2 명령어를 사용한다. LB 정보 확인 참고 : 2021.11.20 - [aws cli] 로드밸런서 정보 확인 describe-load-balancers 명령으로 LB의 현재 정보를 확인할 수 있다. 확인할 로드밸런서 ARN이나 이름을 지정하지 않으면 모든 로드밸런서 정보를 확인한다. aws elbv2 describe-load-balancers # --names : 로드밸런서 이름 # 예시 aws elbv2 desc..

AWS 2023.10.06