리스트 안에 또 다른 리스트가 포함된 중첩 리스트(nested list)를 하나의 1차원 리스트로 펼치는 작업을 평탄화(flattening)라고 합니다. 파이썬에서는 재귀(recursion) 기법과 함께 단순 인덱싱 및 isinstance 메서드를 사용하면 이 작업을 매우 간결하게 처리할 수 있습니다.재귀란 큰 문제를 작은 단위로 나누어 각 부분의 결과를 계산한 뒤, 이 결과들을 다시 결합하여 전체 문제의 해답을 도출하는 방식입니다. 구조가 반복적으로 중첩되는 리스트 평탄화 문제에 특히 적합한 접근법입니다.예제 코드다음은 재귀를 사
재귀(recursion) 기법을 사용하여 중첩 리스트(nested list)의 총합을 구해야 할 때는, 리스트를 매개변수로 받는 사용자 정의 메서드를 활용하는 것이 일반적입니다.재귀란 하나의 큰 문제를 작은 단위로 나누어 각 부분의 결과를 계산한 후, 이 결과들을 결합하여 전체 문제의 해답을 도출하는 프로그래밍 기법입니다.참고로 파이썬의 리스트는 서로 다른 자료형의 값을 함께 저장할 수 있습니다. 즉, 정수, 실수, 문자열 등 어떤 데이터든 하나의 리스트 안에 담을 수 있습니다.예제다음은 재귀를 이용해 중첩 리스트의 합계를 구하는
리스트의 길이를 재귀(Recursion) 기법으로 구해야 하는 경우, 사용자가 직접 정의한 메서드와 간단한 인덱싱 기법을 활용하면 됩니다.리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값(이기종 데이터)을 하나의 자료구조에 함께 저장할 수 있습니다.재귀는 큰 문제를 잘게 나눈 작은 단위의 결과를 계산한 뒤, 이 결과들을 결합하여 전체 문제의 해답을 도출하는 방식입니다.예제아래는 이를 보여주는 데모입니다 −def list_length(my_list): if not my_list: &n
피보나치 수열을 재귀(recursion) 기법을 사용하지 않고 구하는 방법을 알아보겠습니다. 이 방식에서는 사용자로부터 입력값을 받은 뒤, while 반복문을 활용해 수열의 숫자들을 차례대로 계산합니다.예제 코드아래는 while 반복문으로 피보나치 수열을 출력하는 전체 코드입니다.first_num = int(input(피보나치 수열의 첫 번째 수를 입력하세요... )) second_num = int(input(피보나치 수열의 두 번째 수를 입력하세요... )) num_of_terms = int(input(출력할 항의 개수를 입력하세
재귀(recursion)를 사용하지 않고 숫자의 팩토리얼(계승)을 구해야 하는 경우, while 반복문을 활용하면 간단하게 해결할 수 있습니다.팩토리얼(factorial)은 1부터 n까지의 모든 양의 정수를 곱한 값으로, n!로 표기합니다. 예를 들어 5! = 5 × 4 × 3 × 2 × 1 = 120입니다.예제 코드아래는 while 반복문을 사용해 팩토리얼을 계산하는 예시입니다.my_num = int(input(숫자를 입력하세요 :)) my_factorial = 1 while(my_num>0): my_factorial
재귀(recursion) 기법을 사용하지 않고 중첩된 리스트를 평탄화(flatten)해야 하는 경우, 람다(lambda) 함수와 함께 sum, map, isinstance 메서드를 활용하면 간결하게 해결할 수 있습니다.핵심 개념 정리먼저 이 예제에 사용되는 주요 개념들을 살펴보겠습니다.1. 리스트(List)파이썬의 리스트는 이기종(heterogeneous) 값을 저장할 수 있는 자료구조입니다. 즉, 정수, 실수, 문자열 등 서로 다른 데이터 타입의 값들을 하나의 리스트에 담을 수 있습니다.2. isinstance() 메서드isins
파이썬에서 재귀(recursion) 기법을 사용하지 않고 문자열을 뒤집어야 하는 경우가 있습니다. 이럴 때 가장 간단하고 효율적인 방법은 음수 인덱싱(negative indexing)을 활용하는 것입니다.인덱싱은 문자열 내 특정 위치의 요소에 접근할 수 있게 해주는 기능으로, 슬라이싱과 함께 사용하면 별도의 반복문이나 재귀 호출 없이도 손쉽게 문자열을 역순으로 만들 수 있습니다.예제 코드다음은 음수 인덱싱을 사용해 문자열을 뒤집는 예제입니다.my_string = str(input(뒤집을 문자열을 입력하세요: )) print(뒤집힌
두 개의 딕셔너리(dictionary)를 하나의 객체로 합쳐야 할 때는 update 메서드를 사용하면 간단하게 처리할 수 있습니다.딕셔너리는 키-값(key-value) 쌍으로 구성되는 파이썬의 대표적인 자료구조입니다.아래는 두 딕셔너리를 연결하는 예제 코드입니다.예제my_dict_1 = {J:12,W:22} my_dict_2 = {M:67} print(첫 번째 딕셔너리 :) print(my_dict_1) print(두 번째 딕셔너리 :) print(my_dict_2) my_dict_1.update(my_dict_2) print(연결
주어진 범위 안의 숫자를 {x: x²} 형태로 저장하는 딕셔너리를 만들어야 하는 경우가 자주 있습니다. 이럴 때는 사용자로부터 입력값을 받고, 간단한 for 반복문만 활용하면 손쉽게 구현할 수 있습니다.예제 코드다음은 1부터 입력받은 숫자 n까지 각 숫자를 키(key)로, 그 제곱을 값(value)으로 갖는 딕셔너리를 생성하는 예제입니다.my_num = int(input(숫자를 입력하세요.. )) my_dict = dict() for elem in range(1, my_num + 1): my_dict[elem] = elem
딕셔너리에 저장된 모든 요소(값)를 곱해야 하는 경우에는 딕셔너리의 키(key)를 하나씩 순회하면서, 각 키에 해당하는 값을 이전까지의 곱셈 결과에 계속 곱해 주면 됩니다. 모든 순회가 끝난 뒤 변수에 남아 있는 값이 최종 곱셈 결과입니다.여기서 딕셔너리(dictionary)란 키(key)와 값(value)이 한 쌍을 이루어 저장되는 파이썬의 자료구조를 의미합니다.예제 코드다음은 딕셔너리의 모든 값을 곱하는 과정을 보여주는 예제입니다.my_dict = {Jane:99,Will:54,Mark:-3} my_result = 2 for k
파이썬에서 클래스와 객체를 활용해 딕셔너리를 생성해야 하는 경우가 있습니다. 이럴 때는 먼저 클래스를 정의하고, 그 안에 __init__ 함수를 작성하여 변수에 값을 할당합니다. 그다음 클래스의 인스턴스를 생성하면 __init__ 함수가 자동으로 호출되어 초기화 작업이 수행됩니다.예제아래는 이를 보여주는 예제 코드입니다.class base_class(object): def __init__(self): se
파이썬에서 딕셔너리(dictionary)를 이용해 문자열에 등장하는 단어의 빈도수를 세고 싶다면, split() 메서드와 리스트 컴프리헨션(list comprehension)을 활용하면 간단하게 구현할 수 있습니다.split() 메서드는 문자열을 공백 기준으로 나누어 단어 목록을 만들어 주며, 리스트 컴프리헨션은 반복문을 한 줄로 축약한 표현식입니다. 리스트 컴프리헨션을 사용하면 코드가 더 간결하고 가독성이 높아집니다.참고로 파이썬의 리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 함께 저장할 수 있는 유연한 자료구조입니
문자열에서 각 단어의 첫 글자를 키로, 그 문자로 시작하는 단어 자체를 값으로 하는 딕셔너리를 만들어야 하는 경우가 있습니다. 이럴 때 파이썬에서는 split() 메서드와 딕셔너리, 그리고 간단한 if 조건문을 활용하면 손쉽게 구현할 수 있습니다.예제 코드아래는 전체 구현 예시입니다.my_string = input(문자열을 입력하세요 : ) split_string = my_string.split() my_dict = {} for elem in split_string: if elem[0] not in my_dict.keys()
두 개의 문자열이 주어졌을 때, 첫 번째 문자열에는 포함되어 있지만 두 번째 문자열에는 없는 문자를 찾아 화면에 출력해야 하는 경우가 있습니다. 이럴 때 사용자로부터 문자열 두 개를 입력받은 뒤, 파이썬의 집합(set) 자료형을 활용하면 간단하게 두 문자열 간의 차이를 구할 수 있습니다.파이썬은 기본 자료형 중 하나로 set(집합)을 제공합니다. 집합은 중복되지 않는 고유한 요소들만 저장하는 자료구조입니다.집합은 교집합(intersection), 차집합(difference), 합집합(union), 대칭차집합(symmetric dif
개요 두 문자열에 각각 존재하지만 두 문자열에 공통으로 포함되지 않은 문자를 표시해야 하는 경우가 있습니다. 이때 사용자로부터 입력을 받은 뒤 파이썬의 list(리스트)와 set(집합) 자료구조를 활용하면 손쉽게 구현할 수 있습니다. 리스트(List)란? 리스트는 서로 다른 타입의 값을 함께 저장할 수 있는 자료구조입니다. 정수, 실수, 문자열 등 어떤 데이터 타입이든 저장할 수 있으며, list() 메서드를 사용하면 주어진 반복 가능한(iterable) 객체를 리스트 타입으로 변환할 수 있습니다. 집합(Set)이란? 파이썬에는
입력된 숫자가 짝수인지 홀수인지 확인해야 할 때 재귀(recursion)를 활용할 수 있습니다. 재귀는 큰 문제를 작은 단위로 나누어 각 부분의 결과를 계산한 뒤, 이를 결합해 전체 문제의 해답을 도출하는 방식입니다.예제 코드아래는 재귀 함수로 홀수와 짝수를 판별하는 파이썬 코드 예제입니다.def check_odd_even(my_num): if (my_num < 2): return (my_num % 2 == 0) return (check_odd
파이썬에서 재귀(recursion)를 사용해 문자열 안에 특정 문자가 몇 번 등장하는지 확인해야 하는 경우, 하나의 함수를 정의하고 그 안에서 if 조건문을 활용하면 손쉽게 해결할 수 있습니다.재귀는 큰 문제를 잘게 나눈 작은 단위의 결과를 먼저 계산한 뒤, 이 결과들을 다시 결합하여 전체 문제의 해답을 만들어내는 방식입니다. 문자 개수 세기처럼 반복적인 패턴을 지닌 문제에 특히 적합합니다.예제 코드아래는 재귀 함수를 활용해 문자 출현 빈도를 구하는 전체 코드입니다.def check_frequency(my_str, my_ch):
파이썬에서 주어진 문자열이 회문(palindrome)인지 아니면 대칭(symmetric)인지 확인해야 하는 경우가 있습니다. 이때 각각의 검사를 수행하는 함수를 직접 정의하고, while 반복문과 조건문을 활용하면 손쉽게 해결할 수 있습니다.먼저 두 개념을 간단히 정리하면 다음과 같습니다.회문(Palindrome): 왼쪽에서 오른쪽으로 읽어도, 오른쪽에서 왼쪽으로 읽어도 동일한 문자열 또는 숫자를 의미합니다. 즉, 앞뒤가 서로 대칭되는 위치의 인덱스 값이 같습니다. 예를 들어 madam, level 등이 있습니다.대칭(Symmetr
튜플 리스트(list of tuples)에서 각 튜플을 뒤집어야 할 때는 음수 스텝 슬라이싱(negative step slicing)을 활용하면 매우 간단하게 해결할 수 있습니다.리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값들을 함께 저장할 수 있는 자료구조입니다. 튜플 리스트란 하나의 리스트 안에 여러 개의 튜플이 포함된 형태를 말합니다.음수 슬라이싱은 양수 인덱스 대신 음수 인덱스를 사용하여 요소에 접근하는 방식입니다. 특히 [::-1]과 같이 스텝 값을 -1로 지정하면 시퀀스 전체를 역순으로 뒤집을 수 있습니다.예제
튜플 리스트에서 동일한 키를 가진 값들을 묶어 합산하는 그룹화된 합계를 구해야 할 때는 Counter 클래스와 + 연산자를 함께 사용하면 됩니다.Counter는 해시 가능(hashable)한 객체를 손쉽게 세어 주는 컬렉션 하위 클래스입니다. 호출되는 순간 리스트나 튜플과 같은 반복 가능한(iterable) 객체를 기반으로 자체적으로 해시 테이블을 생성하며, 개수가 0이 아닌 모든 요소에 대한 결과를 반환합니다.+ 연산자는 숫자 값을 더하거나 문자열을 연결할 때 사용할 수 있으며, 두 개의 Counter 객체를 더하면 같은 키의 값