이중 연결 리스트(Doubly Linked List)에서 가장 큰 요소를 찾아야 하는 경우, 리스트에 요소를 추가하는 메서드와 전체 리스트를 순회하며 최댓값을 구하는 메서드를 정의하면 됩니다. 이 글에서는 파이썬으로 이를 구현하는 과정을 단계별로 살펴봅니다. 예제 코드 largest_val: largest_val = curr.data curr = curr.next return largest_val my_instance = DoublyLinkedList_structure() my_lis
두 개의 연결 리스트(Linked List)에서 서로 대응되는 위치의 요소들을 더해야 하는 경우가 있습니다. 이때는 연결 리스트에 요소를 추가하는 메서드, 연결 리스트의 요소를 출력하는 메서드, 그리고 두 연결 리스트의 대응 위치 요소를 더하는 메서드를 각각 정의하면 됩니다. 이후 두 개의 리스트 인스턴스를 생성하고, 앞서 정의한 메서드를 호출하여 결과를 확인할 수 있습니다.아래는 전체 과정에 대한 예제입니다 −예제class Node: def __init__(self, data): self.data = data
두 개의 연결 리스트(Linked List)가 주어졌을 때, 두 리스트에 모두 존재하는 요소 중 첫 번째로 등장하는 공통 요소를 찾아야 하는 경우가 있습니다. 이를 위해 연결 리스트에 요소를 추가하는 메서드와, 두 리스트에서 가장 먼저 나타나는 공통 값을 반환하는 메서드를 정의할 수 있습니다. 아래는 이를 구현한 예제입니다. 예제 코드 class Node: def __init__(self, data): self.data = data self.next = None class LinkedList
연결 리스트(Linked List)에서 특정 요소가 몇 번 나타나는지 확인해야 하는 경우가 있습니다. 이를 위해 요소를 추가하는 메서드, 리스트를 출력하는 메서드, 그리고 각 요소의 발생 횟수를 계산하는 메서드를 정의하여 해결할 수 있습니다.아래는 전체 구현 예제입니다.예제 코드class Node: def __init__(self, data): self.data = data &n
연결 리스트(Linked List)에서 특정 개수의 요소만 뒤집어야 하는 경우가 있습니다. 이럴 때 reverse_list라는 메서드를 정의하면, 리스트를 순회하면서 지정한 개수의 요소만 효율적으로 반전시킬 수 있습니다.아래 예제를 통해 실제 구현 과정을 살펴보겠습니다.예제 코드class Node: def __init__(self, data): self.data = data self.next = None class LinkedList_structure: def __init__(self):
연결 리스트(Linked List)에서 가장 중간에 위치한 요소를 출력해야 하는 경우가 있습니다. 이럴 때 print_middle_val이라는 메서드를 정의하면 손쉽게 해결할 수 있습니다. 이 메서드는 연결 리스트 전체를 매개변수로 받아 중간에 있는 요소를 찾아 화면에 출력합니다.리스트 길이가 홀수이면 중간 요소 하나를, 짝수이면 중앙에 인접한 두 개의 요소를 함께 출력하도록 처리합니다.예제 코드class Node: def __init__(self, data):  
연결 리스트(Linked List)의 끝에서 특정 위치의 노드를 출력해야 하는 경우, list_length와 return_from_end 두 가지 메서드를 정의하여 해결할 수 있습니다. list_length 메서드는 연결 리스트의 전체 길이를 계산하여 반환하며, return_from_end 메서드는 이 길이를 활용해 끝에서 n번째에 해당하는 요소를 반환합니다. 아래는 실제 동작 과정을 보여주는 예시입니다. 예제 코드 class Node: def __init__(self, data): self.data = dat
튜플로 구성된 리스트에서 숫자 형태의 문자열 요소를 실수(float) 값으로 변환해야 하는 경우가 종종 있습니다. 이럴 때 isalpha() 메서드를 사용하면 해당 요소가 알파벳(문자)인지 여부를 손쉽게 판별할 수 있으며, 알파벳이 아닌 요소는 float() 함수를 통해 실수 값으로 변환할 수 있습니다.아래는 이를 구현한 예제 코드입니다.예제 코드my_list = [("45", "Jane"), ("11", "Will"), ("37.68", &q
회문(Palindrome)이란 앞에서 읽으나 뒤에서 읽으나 동일한 문자열을 의미합니다. 예를 들어 level, madam, racecar 같은 문자열이 대표적인 회문입니다.스택(Stack) 자료구조를 활용하면 문자열이 회문인지 손쉽게 판별할 수 있습니다. 스택은 LIFO(Last In, First Out, 후입선출) 방식으로 동작하기 때문에, 문자열의 각 문자를 순서대로 push한 뒤 pop하면 문자열이 자연스럽게 거꾸로 뒤집힙니다. 이렇게 얻은 뒤집힌 문자열을 원래 입력값과 비교하면 회문 여부를 알 수 있습니다.이를 위해 먼저 스
리스트에 담긴 튜플들의 요소를 자릿수(숫자의 개수)를 기준으로 정렬해야 할 때, 파이썬의 sorted 메서드와 람다(lambda) 함수를 활용하면 간단하게 해결할 수 있습니다. 아래는 실제 구현 예시입니다. 예제 my_list = [(11, 23, 45, 678), (34, 67), (653,), (78, 99, 23, 45), (67, 43)] print(The list is : ) print(my_list) my_result = sorted(my_list, key = lambda tup : sum([len(str(ele))
개요 리스트에서 선형 시간 복잡도(O(n))로 n번째로 작은 요소를 선택해야 하는 상황이라면, 크게 두 가지 메서드가 필요합니다. 하나는 주어진 범위에서 가장 작은 요소를 찾는 메서드이고, 다른 하나는 리스트를 두 부분으로 나누는 파티션(partition) 메서드입니다. 리스트를 나누는 기준은 사용자가 입력한 i 값입니다. 이 값을 기준으로 리스트가 분할되고, 재귀 호출을 통해 원하는 순번의 작은 요소가 최종적으로 결정됩니다. 이러한 접근 방식은 퀵 정렬(Quick Sort)의 파티션 기법을 응용한 것으로, 흔히 퀵셀렉트(Quick
이 글에서는 Boto3를 사용하여 AWS Glue Data Catalog의 특정 데이터베이스에 있는 전체 테이블 또는 정규 표현식과 일치하는 일부 테이블의 정의를 조회하는 방법을 살펴보겠습니다.예제 시나리오데이터베이스 QA-test에 포함된 모든 테이블 중에서 security와 employee 테이블의 정의를 가져와 보겠습니다.문제 해결 접근 방식1단계: 예외 처리를 위해 boto3 및 botocore의 예외 클래스를 임포트합니다.2단계: database_name은 필수 파라미터이며, regular_expression_for_tab
이 글에서는 Boto3 라이브러리를 사용해 AWS Glue Data Catalog에 등록된 특정 트리거의 세부 정보를 조회하는 방법을 알아봅니다.예제 개요사용자 계정에서 허용된 트리거 중 01_PythonShellTest1이라는 이름을 가진 트리거의 상세 정보를 가져오는 것이 목표입니다.문제 해결 접근 방식1단계: 예외 처리를 위해 boto3와 botocore의 예외 모듈을 임포트합니다.2단계: trigger_name은 이 함수의 필수 파라미터입니다. 해당 함수는 사용자 계정에서 지정된 트리거의 세부 정보를 조회한 후 메타데이터를
이 글에서는 Python의 boto3 라이브러리를 사용하여 AWS Glue 데이터 카탈로그에서 특정 작업(Job)과 연결된 모든 트리거(Trigger)의 세부 정보를 조회하는 방법을 단계별로 살펴봅니다.예제 개요employee_details라는 작업과 연결된 모든 트리거의 세부 정보를 가져오는 것이 목표입니다.문제 정의: Python에서 boto3 라이브러리를 활용해 특정 작업에 연결된 모든 트리거의 상세 정보를 조회합니다.문제 해결 접근 방식 및 알고리즘1단계: 예외 처리를 위해 boto3와 botocore의 예외 모듈을 임포트합
이 글에서는 AWS Glue Data Catalog에서 지정된 함수 정의에 대한 세부 정보를 조회하는 방법을 알아보겠습니다.예시 개요데이터베이스 employee에 등록된 insert_employee_record라는 이름의 함수 정의 세부 정보를 가져오는 것이 목표입니다.문제 정의Python의 boto3 라이브러리를 사용하여 AWS Glue Data Catalog에서 특정 함수 정의의 세부 정보를 조회합니다.해결 접근 방식 및 알고리즘1단계: 예외 처리를 위해 boto3와 botocore 예외 모듈을 임포트합니다.2단계: databa
AWS Glue Data Catalog는 데이터베이스와 테이블뿐만 아니라 사용자가 등록한 사용자 정의 함수(UDF)의 메타데이터도 관리할 수 있습니다. 이 글에서는 Python의 boto3 라이브러리를 사용하여 Glue Data Catalog에 저장된 여러 함수 정의의 세부 정보를 한 번에 조회하는 방법을 살펴보겠습니다. 문제 상황 Python의 boto3 라이브러리를 사용하여 AWS Glue Data Catalog의 특정 데이터베이스(들)에 존재하는 여러 함수 정의에 대한 세부 정보를 가져오려고 합니다. 해결 방식/알고리즘 1단
리스트에서 n번째로 큰 요소를 선형 시간 복잡도(O(n))로 선택하려면 두 가지 핵심 동작이 필요합니다. 하나는 특정 구간에서 가장 큰(또는 기준이 되는) 요소를 찾는 방법이고, 다른 하나는 사용자가 입력한 i 값을 기준으로 리스트를 두 부분으로 분할하는 방법입니다. 이 기법은 퀵정렬(Quick Sort)의 파티션 개념을 응용한 퀵셀렉트(Quickselect) 알고리즘과 유사하며, 전체를 정렬하지 않고도 원하는 순위의 요소를 빠르게 찾을 수 있습니다.아래는 이를 구현한 예시입니다.예제 코드def select_largest(my_li
스택(Stack) 자료구조를 재귀(Recursion)를 이용해 뒤집어야 하는 경우, 값을 추가하고 삭제하며 스택의 요소를 출력하는 기본 메서드들과 함께 stack_reverse 메서드를 정의하면 손쉽게 구현할 수 있습니다.아래 예제를 통해 실제 구현 방법을 살펴보겠습니다.예제 코드class Stack_structure: def __init__(self): self.items = []  
스택(Stack)은 LIFO(Last In, First Out, 나중에 들어온 것이 먼저 나감) 방식으로 동작하는 자료구조이고, 큐(Queue)는 FIFO(First In, First Out, 먼저 들어온 것이 먼저 나감) 방식으로 동작합니다. 두 자료구조의 성질이 정반대이기 때문에, 큐 하나만으로 스택을 구현하려면 약간의 트릭이 필요합니다. 핵심 아이디어는 push할 때는 그대로 큐에 삽입하고, pop할 때는 큐의 원소들을 한 바퀴 회전시켜 가장 마지막에 들어온 원소를 맨 앞으로 보낸 뒤 제거하는 것입니다.아래 예제에서는 Stac
두 개의 큐(Queue)를 사용해 스택(Stack)을 구현하려면 Stack_structure 클래스와 Queue_structure 클래스가 필요합니다. 각 클래스 안에는 스택과 큐에 값을 추가하거나 삭제하는 메서드들이 정의됩니다.아래 예제를 통해 실제 구현 과정을 살펴보겠습니다.예제 코드class Stack_structure: def __init__(self): self.queue_1 = Queue_structure() self.queue_2 = Queue_structure() def c