세 개의 숫자 x, y, z가 주어졌을 때, 우리의 목표는 (x^y) % z, 즉 x를 y번 거듭제곱한 값을 z로 나눈 나머지를 계산하는 것입니다.예제입력: x = 2, y = 3, p = 3 출력: 2설명: 2^3 % 3 = 8 % 3 = 2 입니다.알고리즘1단계: 세 개의 숫자를 입력받습니다. 2단계: pow() 함수로 거듭제곱을 계산하고, % 연산자로 모듈러(나머지)를 구합니다. 3단계: 결과를 출력합니다.예제 코드x = int(input(첫 번째 값 입력 ::>)) y = int(input(두 번째 값 입력 ::>
세 개의 숫자 a, b, c가 주어졌을 때, 그중에서 가장 큰 값을 찾아 출력하는 것이 이번 예제의 목표입니다. 파이썬에서는 내장 함수 max()를 활용하면 복잡한 조건문 없이도 매우 간단하게 최댓값을 구할 수 있습니다. 예제 입력: a = 2, b = 4, c = 3 출력: 4 알고리즘 1단계: 사용자로부터 세 개의 숫자를 입력받습니다. 2단계: 입력받은 세 숫자를 리스트에 저장합니다. 3단계: max() 함수를 사용하여 리스트에서 가장 큰 수를 찾습니다. 4단계: 최종적으로 최댓값을 화면에 출력합니다. 예제 코드 de
이번 글에서는 사용자로부터 두 개의 N×N 행렬을 입력받아 그 곱셈 결과를 화면에 출력하는 파이썬 프로그램을 살펴봅니다. 행렬 데이터는 중첩 리스트(nested list)로 저장하고, 연산 과정은 중첩 for 반복문으로 처리합니다. 알고리즘 입력 단계: 두 개의 행렬을 사용자로부터 입력받습니다. 순회 단계: 중첩 for 반복문으로 첫 번째 행렬의 각 행과 두 번째 행렬의 각 열을 차례대로 순회합니다. 연산 단계: 모든 요소가 0으로 초기화된 결과 행렬(resultant matrix)을 준비합니다. 첫 번째 행렬의 행 요소와 두
문자열이 주어졌을 때, 해당 문자열로 만들 수 있는 모든 순열(permutation)을 화면에 출력하는 것이 이번 예제의 목표입니다. 파이썬에서는 itertools 모듈의 내장 함수인 permutations()를 활용하면 복잡한 재귀 로직 없이도 아주 간단하게 해결할 수 있습니다.예제입력 : string = XYZ 출력 : XYZ XZY YXZ YZX ZXY ZYX알고리즘전체적인 해결 과정은 다음과 같습니다.1단계 : 문자열을 입력받는다. 2단계 : permutations() 함수를 사용해 문자열의 모든 순열을 생성한다. 3단계 :
이 글에서는 사용자로부터 키와 몸무게를 입력받아, 공식을 적용해 BMI(체질량지수)를 계산하고 그 결과를 출력하는 파이썬 프로그램을 만들어 보겠습니다. BMI란 무엇인가? BMI(Body Mass Index, 체질량지수)는 키와 몸무게의 비율을 바탕으로 비만도를 평가하는 대표적인 건강 지표입니다. 계산 공식은 다음과 같습니다. BMI = 체중(kg) ÷ 키(m)² 알고리즘 1단계: 신체의 키와 몸무게를 입력받는다. 2단계: BMI 계산 공식을 적용한다. 3단계: 계산된 BMI 값을 화면에 출력한다. 예제 코드 height =
사용자로부터 입력받은 두 개의 행렬이 주어졌을 때, 두 행렬의 합을 계산하여 출력하는 것이 이 프로그램의 목표입니다. 행렬의 덧셈은 같은 위치에 있는 원소끼리 서로 더하는 연산으로, 파이썬에서는 중첩 반복문과 리스트를 활용하면 손쉽게 구현할 수 있습니다. 알고리즘 1단계: 두 개의 행렬을 입력받는다. 2단계: 중첩 for 루프를 사용하여 각 행과 열을 순회한다. 3단계: 각 반복마다 두 행렬의 대응하는 원소를 더한 뒤, 그 결과를 저장한다. 예제 코드 ) for r in result: print(r) 실행 결과 [11
리스트가 주어졌을 때, 각 하위 리스트의 두 번째 요소를 기준으로 전체 리스트를 정렬해야 하는 경우가 자주 있습니다. 이번 글에서는 가장 기본적인 정렬 알고리즘 중 하나인 버블 정렬(Bubble Sort)을 사용하여 이 문제를 해결하는 방법을 단계별로 살펴보겠습니다. 예시 입력 : [[CCC, 15], [AAA, 10], [RRRR, 2], [XXXX, 150]] 출력 : [[RRRR, 2], [AAA, 10], [CCC, 15], [XXXX, 150]] 숫자 값(두 번째 요소)이 2 → 10 → 15 → 150 순으로 오름차순
Python은 HTML 문서를 PDF로 변환할 수 있는 다양한 라이브러리를 제공합니다. 대표적으로 Pdfcrowd API v2가 있으며, 이 외에도 pdfkit처럼 몇 줄의 코드만으로 손쉽게 변환 작업을 처리할 수 있는 오픈소스 도구들이 있습니다. 이 글에서는 가장 널리 사용되는 pdfkit과 wkhtmltopdf를 활용해 웹페이지나 HTML 문서를 PDF로 변환하는 방법을 단계별로 소개합니다. 설치 방법 가장 먼저 PyPI에서 필요한 클라이언트 라이브러리를 설치합니다. $ pip install pdfcrowd 웹페이지 또는
하나의 문자열이 주어졌을 때, 그 안에서 두 번 이상 등장하는 문자(빈도가 1보다 큰 문자)를 모두 찾아내는 것이 이번 글의 목표입니다.예를 들어 Hello World. Lets learn Python이라는 문자열이 있다고 가정해 보겠습니다. 알고리즘은 여러 번 나타나는 문자들을 자동으로 찾아내며, 실행 결과는 다음과 같은 형태로 출력됩니다.e : 3 l : 4 o : 3 <공백> : 4 r : 2 t : 2 n : 2Counter() 메서드란?이 문제는 파이썬의 collections 모듈에 포함된 Counter() 메서
텍스트 데이터를 시각화하는 가장 인기 있는 방법 중 하나가 바로 워드 클라우드(Word Cloud)입니다. 이 튜토리얼에서는 텍스트 파일과 마스크(mask) 이미지를 활용해 워드 클라우드를 생성하고, 그 결과를 PNG 이미지로 저장하는 파이썬 프로그램을 만들어 보겠습니다. 필요한 라이브러리 워드 클라우드를 구현하려면 다음과 같은 파이썬 라이브러리들이 필요합니다. matplotlib – 그래프 및 이미지 출력 wordcloud – 워드 클라우드 생성 numpy – 마스크 이미지의 픽셀 배열 처리 tkinter – GUI 관련 기능
양의 정수 n이 주어졌을 때, 1부터 n까지의 모든 숫자를 이진수(binary)로 변환한 뒤 각 숫자에 포함된 세트 비트(set bit, 값이 1인 비트)의 총 개수를 계산하는 문제입니다.예시입력 : n=3 출력 : 4n=3인 경우 각 숫자의 이진 표현과 세트 비트 개수는 다음과 같습니다.1 → 001 (세트 비트 1개)2 → 010 (세트 비트 1개)3 → 011 (세트 비트 2개)따라서 전체 세트 비트의 합은 1 + 1 + 2 = 4가 됩니다.알고리즘1단계: 양의 정수를 입력받는다. 2단계: 입력받은 숫자를 이진수 형태로 변환한
배열(array)이 주어졌을 때, 이를 동일한 요소를 가진 일반 파이썬 리스트(list)로 변환하는 방법을 알아보겠습니다. 이 문제는 tolist() 함수를 사용하면 아주 간단하게 해결할 수 있습니다. 이 함수는 배열을 (필요에 따라 중첩된 형태의) 리스트로 변환하여 반환합니다. 알고리즘 1단계: 배열을 준비합니다. 2단계: tolist() 함수를 사용하여 배열을 리스트로 변환합니다. 3단계: 변환된 리스트를 화면에 출력합니다. 예제 코드 #Python program to convert an array to an ordinar
0과 1로만 구성된 이진 행렬(binary matrix)이 주어졌을 때, 서로 중복되는 행을 찾아 출력하는 것이 이번 예제의 목표입니다. 파이썬 표준 라이브러리의 Counter() 메서드를 활용하면 복잡한 로직 없이도 이 문제를 아주 간단하게 해결할 수 있습니다. 문제 예시 입력: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 출력: (1, 1, 1, 1) (0, 0, 0, 0) 알고리즘 중복 행을 찾는 절차는 다음과 같습니다. 1단계: 0과 1 요소만 포함하는 이진 행렬을 생성합니다. 2단계: 각 행을 딕셔너리의 키
하나의 문자열이 주어졌을 때, 해당 문자열이 헤테로그램(Heterogram)인지 아닌지 판별하는 것이 이번 글의 목표입니다.헤테로그램이란 알파벳 글자가 단 한 번도 반복되지 않는 단어, 문구, 또는 문장을 의미합니다. 즉, 문자열에 포함된 모든 문자가 서로 달라야 합니다. 참고로 헤테로그램은 알파벳의 모든 글자를 최소 한 번씩 사용하는 팬그램(Pangram)과는 다른 개념입니다.예제입력 문자열: abc def ghi헤테로그램입니다. (반복되는 알파벳이 없음)입력 문자열: abc bcd dfh헤테로그램이 아닙니다. (b, c, d가
이 글에서는 두 개의 행렬이 주어졌을 때, 두 행렬이 서로 동일한지 확인하는 파이썬 프로그램을 다룹니다. 두 행렬은 같은 차수(order)를 가지며, 두 행렬이 완전히 동일하려면 행과 열의 개수가 같아야 하고, 모든 대응하는 원소들도 서로 같아야 합니다. 알고리즘 1단계: 두 개의 행렬을 생성합니다. 2단계: 첫 번째 행렬과 두 번째 행렬의 모든 원소를 순회(traverse)하면서, 첫 번째 행렬의 각 원소를 두 번째 행렬의 해당 원소와 비교합니다. 3단계: 모든 원소가 서로 같다면 두 행렬은 동일한 것입니다. 예제
문제 소개 공백으로 구분된 여러 개의 소문자 단어가 주어졌을 때, 서로 애너그램 관계에 있는 단어들만 모아 만들 수 있는 가장 큰 부분 집합의 크기를 구하는 것이 이번 과제입니다. 여기서 애너그램(anagram)이란 한 문자열의 글자들을 재배열하여 다른 문자열을 만들 수 있는 관계를 의미합니다. 예를 들어 python과 typhon은 같은 글자들로 이루어져 있으므로 서로 애너그램입니다. 파이썬에서는 collections 모듈의 Counter() 메서드를 활용하면 이 문제를 아주 간단하고 빠르게 해결할 수 있습니다. 알고리즘 1단계
반복자(Iterator)란?파이썬에서 반복자(Iterator)는 반복 프로토콜(iteration protocol)을 구현하는 객체를 의미합니다. 튜플(tuple), 리스트(list), 셋(set) 등은 파이썬에 기본으로 내장된 반복자에 해당합니다. 반복 프로토콜에는 두 가지 핵심 메서드가 있습니다.__iter__() : 반복자를 초기화할 때 호출되는 메서드입니다. 이 메서드는 반드시 next() 또는 __next__()(파이썬 3 기준) 메서드를 포함하는 객체를 반환해야 합니다.next() 또는 __next__()(파이썬 3) :
파이썬은 statistics 모듈을 임포트하는 것만으로 다양한 수학적 표현과 통계 데이터를 손쉽게 처리할 수 있습니다. 이 모듈을 활용하면 평균, 중앙값, 최빈값 등 여러 종류의 통계 연산과 수학적 계산을 아주 간단한 코드로 수행할 수 있습니다. 아래 함수들은 표본(sample) 또는 모집단(population) 데이터의 대푯값을 계산할 때 사용됩니다. mean()데이터의 산술 평균(average) 값을 구합니다. harmonic_mean()데이터의 조화 평균 값을 구합니다. median()데이터의 중앙값(median)을 구합니
수학 시간에 배우는 집합(set) 개념이라면 누구나 익숙할 것입니다. 파이썬의 set 자료형은 수학의 집합과 동일한 개념을 구현한 데이터 구조로, 다양한 요소들을 담을 수 있으며 요소 간에는 순서가 정의되지 않습니다. 세트에서는 요소를 자유롭게 추가하거나 삭제할 수 있고, 반복문으로 요소를 순회할 수 있으며, 합집합·교집합·차집합과 같은 표준 집합 연산도 손쉽게 수행할 수 있습니다.이 글에서는 주어진 세트에서 요소를 하나씩 제거하는 방법을 살펴봅니다. 여기서는 파이썬 내장 메서드인 pop()을 사용합니다. pop() 메서드는 세트에
정의 — 제자리 연산(in-place operation)이란 복사본을 새로 만들지 않고 주어진 선형 대수 객체(벡터, 행렬, 텐서 등)의 내용을 직접 변경하는 연산을 말합니다. 그리고 이러한 연산을 수행하는 데 사용되는 연산자를 제자리 연산자(in-place operator)라고 부릅니다.대표적인 예로 a += b는 a = operator.iadd(a, b)와 동일하게 동작합니다.파이썬의 operator 모듈에는 제자리 연산을 수행하는 다양한 함수들이 제공됩니다. 아래에서 주요 함수들을 하나씩 살펴보겠습니다.iadd()현재 값에 다