Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python

  1. 파이썬 재귀로 구현하는 이진 트리 깊이 우선 탐색(DFS) 프로그램

    개요트리 자료구조에서 재귀(recursion)를 활용해 깊이 우선 탐색(Depth First Search, DFS)을 수행하려면 먼저 트리 노드를 표현하는 클래스를 정의하고, 그 안에 탐색과 삽입을 담당하는 메서드들을 구현해야 합니다. DFS는 루트에서 시작해 한쪽 가지를 끝까지 내려간 뒤 다시 올라와 다른 가지를 탐색하는 방식으로 동작합니다.아래 예제는 대화형 메뉴를 통해 노드를 삽입하고, 재귀 호출로 전체 트리를 순회하는 과정을 보여줍니다.예제 코드class BinaryTree_struct: def __init__(sel

  2. 파이썬으로 문자열에서 홀수 인덱스의 문자 제거하기

    문자열에서 홀수 인덱스에 위치한 문자들을 제거해야 하는 경우가 있습니다. 이럴 때 문자열을 매개변수로 받아 처리하는 함수를 정의하면 간단하게 해결할 수 있습니다.아래는 그 구현 예시입니다.예제 코드def remove_odd_index_characters(my_str): new_string = i = 0 while i < len(my_str): if (i % 2 == 1): i += 1 continue new_string += my_

  3. 파이썬으로 문자열의 단어 수와 문자 수 계산하는 방법

    파이썬에서 문자열에 포함된 단어 수와 문자 수를 계산해야 하는 경우가 자주 있습니다. 텍스트 분석, 입력값 검증 등 다양한 상황에서 유용하게 활용될 수 있습니다. 아래는 반복문을 사용하여 이를 구현한 기본적인 방법입니다.예제 코드my_string = Hi there, how are you Will ? print(The string is :) print(my_string) my_chars=0 my_words=1 for i in my_string: my_chars=my_chars+1 if(i== ): my

  4. 파이썬 중위 순회(Inorder Traversal)로 트리에서 최댓값 찾는 프로그램

    트리에서 중위 순회(inorder traversal) 방식으로 가장 큰 값을 찾아야 할 때, 루트 노드를 설정하고 재귀 호출을 통해 중위 순회를 수행하는 등의 메서드를 포함한 이진 트리(binary tree) 클래스를 생성하면 됩니다.클래스의 인스턴스를 생성한 후에는 해당 인스턴스를 통해 다양한 메서드에 접근하여 사용할 수 있습니다.아래에서 실제 구현 예시를 확인해 보겠습니다.예제 코드class BinaryTree_Struct:    def __init__(self, key=None): 

  5. 파이썬으로 후위 순회(Post-order) 방식의 깊이 우선 탐색(DFS) 구현하기

    깊이 우선 탐색(Depth First Search, DFS)을 후위 순회(Post-order Traversal) 방식으로 구현하려면, 트리 클래스를 정의하고 그 안에 노드 추가, 특정 키 검색, 후위 순회 수행 등의 메서드를 작성해야 합니다. 이후 클래스의 인스턴스를 생성하면 각 메서드에 접근하여 원하는 연산을 수행할 수 있습니다.아래에서 실제 구현 예시를 확인해 보겠습니다.예제 코드class Tree_Struct:    def __init__(self, key=None):       s

  6. 파이썬으로 BFS 순회를 활용해 이진 트리의 미러 복사본 만들기

    트리의 미러(mirror) 복사본을 생성하고, 너비 우선 탐색(BFS, Breadth First Search) 방식으로 그 결과를 화면에 출력해야 하는 상황을 가정해 보겠습니다. 이를 구현하려면 루트 노드 설정, 왼쪽·오른쪽 자식 삽입, 특정 요소 검색, 후위 순회 등의 기능을 갖춘 이진 트리 클래스를 먼저 정의해야 합니다. 클래스의 인스턴스를 생성하면 해당 인스턴스를 통해 정의된 메서드들을 자유롭게 호출할 수 있습니다.아래는 이를 실제로 구현한 예제입니다.예제class BinaryTree_struct: def __init__

  7. 파이썬에서 내장 함수 없이 두 문자열 중 더 긴 문자열을 출력하는 프로그램

    두 개의 문자열을 입력받아 내장 함수를 사용하지 않고 더 큰(길이가 긴) 문자열을 화면에 표시해야 하는 경우, 간단한 반복문과 == 연산자만으로도 손쉽게 구현할 수 있습니다.여기서 말하는 더 큰 문자열은 문자 수가 더 많은 문자열, 즉 길이가 긴 문자열을 의미합니다. 아래는 이를 구현한 예제입니다.예제 코드string_1 = Malala string_2 = Male count_1 = 0 count_2 = 0 print(The first string is :) print(string_1) print(The second string i

  8. 파이썬으로 문자열 속 소문자 개수 세는 프로그램 만들기

    문자열에 포함된 소문자의 개수를 세어야 하는 경우, 문자열을 한 글자씩 순회하면서 각 문자가 소문자인지 확인하고, 소문자일 때마다 카운터 값을 증가시키는 방식으로 간단하게 구현할 수 있습니다.아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.예제 코드my_string = Hi there how are you print(The string is :) print(my_string) my_counter = 0 for i in my_string: if(i.islower()): my_counter = my_counter

  9. 파이썬으로 문자열의 처음 두 글자와 마지막 두 글자를 합쳐 새 문자열 만들기

    개요주어진 문자열의 처음 두 문자와 마지막 두 문자를 연결하여 새로운 문자열을 만들어야 하는 경우가 있습니다. 파이썬에서는 카운터 변수를 정의한 뒤, 인덱싱(indexing)과 슬라이싱(slicing)을 활용해 원하는 범위의 문자에 손쉽게 접근할 수 있습니다.아래에서 실제 동작 과정을 예제와 함께 살펴보겠습니다.예제 코드my_string = Hi there how are you my_counter = 0 for i in my_string: my_counter = my_counter + 1 new_string = my_st

  10. 재귀 없이 문자열의 모든 순열을 사전순으로 출력하는 Python 프로그램

    문자열의 모든 순열(permutation)을 재귀 함수를 사용하지 않고 사전순(lexicographic order)으로 출력해야 하는 경우가 있습니다. 이럴 때는 문자열을 매개변수로 받는 하나의 메서드를 정의하고, 간단한 for 루프로 문자열의 요소를 반복 처리하며 while 조건문으로 특정 제약 조건을 검사하는 방식으로 문제를 해결할 수 있습니다.핵심 아이디어는 흔히 다음 순열(next permutation) 알고리즘이라고 불리는 기법입니다. 현재 순열에서 사전순으로 바로 다음에 오는 순열을 찾아내는 과정을 문자열 길이의 팩토리얼

  11. 파이썬으로 이진 트리의 왼쪽 서브트리 노드만 출력하는 프로그램

    이진 트리에서 왼쪽 서브트리(왼쪽 하위 트리)의 노드만 출력해야 하는 상황이라면, 필요한 기능들을 메서드로 정의한 클래스를 만들어 해결할 수 있습니다. 이 클래스에는 루트 노드를 설정하는 기능, 중위 순회(inorder traversal)를 수행하는 기능, 루트 노드의 왼쪽 또는 오른쪽에 새로운 요소를 삽입하는 기능 등이 포함됩니다. 클래스의 인스턴스를 생성한 뒤에는 이 메서드들을 호출하여 원하는 작업을 손쉽게 수행할 수 있습니다. 아래는 실제 구현 예시입니다. 예제 class BinaryTree_struct:   &nb

  12. 파이썬 재귀를 활용해 문자열의 모든 순열을 사전순으로 출력하는 프로그램

    재귀(recursion)를 활용해 문자열의 모든 순열(permutation)을 사전순(lexicographic order)으로 출력해야 하는 경우, for 루프로 요소 시퀀스를 반복하고 join() 메서드로 각 요소를 하나의 문자열로 연결하는 메서드를 정의하면 됩니다. 아래 예제를 통해 구현 방법을 살펴보겠습니다. 예제 코드 from math import factorial def lexicographic_permutation_order(s): my_sequence = list(s) for _ in range(facto

  13. 파이썬으로 너비 우선 탐색(BFS)을 활용해 트리 노드 출력하기

    트리의 노드를 너비 우선 탐색(BFS, Breadth First Search) 방식으로 출력해야 하는 경우에는 먼저 클래스를 정의하고, 그 안에 루트 노드 설정, 트리에 요소 추가, 특정 요소 검색, bfs 순회 수행 등의 메서드를 구현하면 됩니다. 이렇게 만든 클래스의 인스턴스를 생성하면 해당 메서드들을 자유롭게 호출하여 사용할 수 있습니다.아래는 이를 구현한 예제입니다.예제class Tree_struct: def __init__(self, data=None): self.key = data se

  14. 파이썬(Python)으로 트리의 모든 노드 합계 구하기 – 완전 예제 코드

    트리(tree) 자료구조에서 모든 노드 값의 합을 구해야 하는 경우가 종종 있습니다. 이럴 때는 클래스를 하나 정의하고, 그 안에 루트 노드를 설정하는 메서드, 트리에 노드를 추가하는 메서드, 특정 값을 검색하는 메서드, 그리고 모든 노드를 순회하며 합계를 계산하는 메서드 등을 구현하면 됩니다. 이후 이 클래스의 인스턴스를 생성하여 각 메서드를 자유롭게 호출하고 활용할 수 있습니다.아래는 실제 동작 과정을 보여주는 예제입니다.예제 코드class Tree_struct: def __init__(self, data=None):

  15. 파이썬으로 그래프에서 BFS를 활용해 한 노드에서 도달 가능한 모든 노드 찾기

    그래프에서 특정 노드로부터 도달할 수 있는 모든 노드를 찾아야 하는 경우, 너비 우선 탐색(BFS, Breadth-First Search) 알고리즘을 활용하면 효율적으로 해결할 수 있습니다. 간선(edge)을 추가하는 함수, BFS를 수행하는 함수, 도달 가능한 노드를 출력하는 함수 등을 각각 정의한 뒤 이를 조합하면, 여러 시작 노드에 대해 각각 도달 가능한 노드 집합을 손쉽게 구할 수 있습니다. 아래는 이를 구현한 예제입니다. 예제 from collections import deque def add_edge(v, w): &

  16. Python으로 무방향 그래프의 연결 요소 찾기: 깊이 우선 탐색(DFS) 구현 가이드

    무방향 그래프에서 연결 요소(Connected Component)란 서로 경로로 이어져 있는 정점들의 집합을 의미합니다. 같은 연결 요소에 속한 두 정점 사이에는 반드시 어떤 경로가 존재하며, 그래프 전체가 몇 개의 독립적인 부분으로 나뉘어 있는지 파악하려면 연결 요소를 찾는 작업이 필요합니다. 연결 요소를 찾으려면 그래프를 표현하는 클래스를 정의하고, 정점 초기화, 간선 추가, 깊이 우선 탐색(DFS) 수행, 연결 요소 탐색 등의 메서드를 함께 구현하면 됩니다. 이후 클래스의 인스턴스를 생성해 각 메서드를 호출하면 원하는 결과를

  17. BFS를 활용해 무방향 그래프의 사이클 존재 여부를 확인하는 Python 프로그램

    무방향 그래프(undirected graph)에 사이클(cycle)이 존재하는지 확인해야 하는 경우, 파이썬에서는 collections 모듈의 deque를 이용해 너비 우선 탐색(BFS) 기반으로 이를 간단하게 구현할 수 있습니다. 핵심 아이디어는 정점을 탐색하는 도중 이미 방문한 인접 정점을 다시 만났을 때, 해당 정점이 현재 정점의 바로 이전 정점(부모)이 아니라면 사이클이 존재한다고 판단하는 것입니다. 또한 그래프가 하나의 연결 요소로만 이루어져 있다는 보장이 없기 때문에, 모든 정점을 순회하면서 아직 방문하지 않은 정점마다

  18. 카데인(Kadane) 알고리즘으로 최대 부분 배열 문제를 해결하는 파이썬 프로그램

    카데인(Kadane) 알고리즘은 주어진 숫자 배열에서 연속된 요소들의 합이 가장 큰 최대 부분 배열(maximum subarray)을 찾는 대표적인 동적 계획법 기반 알고리즘입니다. 이 글에서는 카데인 알고리즘을 활용해 최대 부분 배열을 찾는 함수를 정의하고, 반복자(iterator)를 통해 최대 부분 배열의 시작 인덱스, 끝 인덱스, 그리고 합계를 추적하는 방법을 살펴봅니다.예제 코드다음은 카데인 알고리즘을 구현한 파이썬 코드입니다. max_seen_till_now: max_seen_till_now = max

  19. Python으로 문자열에서 n번째(특정 인덱스) 문자 제거하기 – 예제 코드와 설명

    비어 있지 않은 문자열에서 특정 인덱스에 위치한 문자를 제거해야 하는 경우가 있습니다. 이럴 때는 문자열을 처음부터 끝까지 순회하면서, 제거하려는 인덱스와 일치하지 않는 문자들만 새로운 문자열에 저장하는 방식으로 간단히 해결할 수 있습니다.아래는 실제 구현 예시입니다.예제 코드my_string = Hi there how are you print(The string is :) print(my_string) index_removed = 2 changed_string = for char in range(0, len(my_strin

  20. 파이썬으로 문자열의 첫 글자와 마지막 글자를 서로 바꾸는 프로그램

    프로그래밍을 하다 보면 문자열의 첫 번째 문자와 마지막 문자를 서로 교환해야 하는 경우가 종종 있습니다. 파이썬에서는 슬라이싱(slicing) 기반의 인덱싱을 활용하는 함수를 하나 정의하는 것만으로 이 작업을 아주 간단하게 처리할 수 있습니다.예제 코드def exchange_val(my_string):     return my_string[-1:] + my_string[1:-1] + my_string[:1] my_string = Hi there how are you print(The string

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:266/450  20-컴퓨터/Page Goto:1 260 261 262 263 264 265 266 267 268 269 270 271 272