숫자 N이 주어졌을 때, N의 모든 약수를 구한 뒤 다음 조건을 만족하는 네 개의 약수를 찾아 그 곱을 반환해야 합니다.네 약수의 합은 정확히 N과 같아야 합니다.네 약수의 곱은 가능한 한 최대가 되어야 합니다.곱을 극대화하기 위해 네 약수가 서로 같은 값이어도 괜찮습니다.문제 예시예를 들어 N = 60이라고 가정해 보겠습니다. 이 경우 60의 모든 약수는 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60이며, 그중 15를 네 번 선택했을 때 곱이 15 × 15 × 15 × 15 = 50625로 최대가 됩니다
Tkinter는 파이썬으로 GUI 프로그램을 만들 때 매우 유용하게 활용되는 표준 라이브러리입니다. 버튼의 글꼴, 크기, 색상 등 다양한 요소를 자유롭게 꾸밀 수 있으며, 스타일을 적용하는 방법도 여러 가지로 제공됩니다. 이번 글에서는 캔버스 위의 특정 버튼에만 스타일을 적용하는 방법과, 모든 버튼에 일괄적으로 스타일을 적용하는 방법을 예제 코드와 함께 살펴보겠습니다.특정 버튼에만 스타일 적용하기먼저 캔버스에 두 개의 버튼이 있고, 그중 첫 번째 버튼에만 스타일을 적용하고 싶은 경우를 생각해 보겠습니다. 이때는 W.TButton이라
모든 프로그래밍 언어에는 터미널에서 직접 실행하거나 다른 프로그램에서 호출할 수 있는 스크립트를 작성하는 기능이 있습니다. 이러한 스크립트를 실행할 때는 내부의 다양한 함수가 동작하는 데 필요한 인수(argument)를 함께 전달해야 하는 경우가 많습니다. 이 글에서는 Python 스크립트에 인수를 전달하는 대표적인 세 가지 방법을 예제와 함께 살펴보겠습니다.1. sys.argv 사용하기내장 모듈인 sys.argv는 스크립트와 함께 전달된 인수를 처리할 수 있는 가장 기본적인 방법입니다. 기본적으로 첫 번째 요소인 sys.argv[
진행 표시줄(Progressbar)은 특정 작업의 진행 상황을 시각적으로 보여주는 대표적인 GUI 요소입니다. 파일 다운로드, 데이터 처리처럼 시간이 오래 걸리는 작업에서 현재 진행률을 사용자에게 직관적으로 전달하는 역할을 합니다. 이 글에서는 Python의 tkinter GUI 라이브러리를 활용해 진행 표시줄을 만드는 방법을 살펴보겠습니다.기본 개념tkinter에서 진행 표시줄은 tkinter.ttk 모듈에 포함된 Progressbar 클래스를 통해 제공됩니다. 아래 예제 프로그램에서는 먼저 ttk 모듈의 Progressbar 서
파이썬(Python)의 Tkinter는 데스크톱 및 웹 환경에서 다양한 GUI 프로그램을 손쉽게 개발할 수 있게 해주는 강력한 표준 라이브러리입니다. 이번 글에서는 현재 시간을 시(Hour), 분(Minute), 초(Second) 단위로 실시간으로 표시해 주는 디지털 시계를 만드는 방법을 단계별로 살펴보겠습니다.구현 원리디지털 시계를 구현하기 위해 다음과 같은 요소들을 활용합니다.time 모듈: strftime 메서드를 사용하여 시:분:초 형식(%H:%M:%S)으로 현재 시간을 문자열로 가져옵니다.Tkinter 윈도우: 시간 값을
Pandas의 DataFrame은 다양한 방법으로 생성할 수 있으며, 그중 하나가 딕셔너리(dictionary)를 DataFrame으로 변환하는 방식입니다. 이 글에서는 길이가 같은 세 개의 리스트를 Python 딕셔너리로 묶어 Pandas DataFrame을 만드는 방법을 알아보겠습니다.1. 개별 리스트와 딕셔너리 활용하기이 방법에서는 각 리스트를 먼저 개별적으로 선언합니다. 그다음 선언된 리스트들을 딕셔너리 정의 안에서 적절한 키(key)에 대응하는 값(value)으로 지정하고, 마지막으로 Pandas의 pd.DataFrame
Python은 방대한 라이브러리 생태계를 갖추고 있어 Microsoft Excel과 같이 널리 사용되는 데이터 처리 도구와 손쉽게 연동할 수 있습니다. 이 글에서는 xlsxwriter 모듈을 활용해 Excel 파일을 생성하고 데이터를 작성하는 방법을 예제와 함께 살펴봅니다. 다만 xlsxwriter는 새 파일을 만들어 쓰는 용도이며, 이미 존재하는 Excel 파일에는 데이터를 쓸 수 없다는 점에 유의하세요.xlsxwriter 설치하기xlsxwriter는 표준 라이브러리가 아니므로 먼저 pip를 통해 설치해야 합니다.pip insta
파이썬의 Tkinter는 GUI 프로그래밍을 위한 대표적인 표준 라이브러리로, 캔버스 위에 버튼을 생성하는 다양한 방법을 제공합니다. 이 글에서는 기본 tkinter 모듈을 사용해 버튼을 만드는 방법과, 테마가 적용된 tkinter.ttk 모듈을 활용하는 방법을 예제 코드와 함께 살펴보겠습니다.1. 기본 tkinter 모듈로 버튼 만들기아래 예제에서는 먼저 캔버스(윈도우)를 생성한 후, Button 메서드를 적용해 버튼을 만듭니다. from tkinter import * 구문으로 모듈 전체를 임포트했기 때문에, 생성한 버튼에는 기본
Pandas는 Python 프로그램에서 데이터를 효율적으로 처리하기 위해 데이터프레임(DataFrame)을 활용합니다. 이 글에서는 기존 데이터프레임에 특정 조건을 기반으로 새로운 열을 추가하는 방법을 단계별로 살펴보겠습니다.예제 데이터프레임 준비하기먼저 새로운 열을 추가할 대상이 되는 pandas 데이터프레임을 만들어 보겠습니다. 이 데이터프레임은 시험의 요일과 과목 정보를 담고 있습니다.코드 예제import pandas as pd # 시험 요일 및 과목 리스트 Days = [Mon, Tue, Wed, Thu, Fri] Sub
판다스(Pandas)는 데이터 처리와 데이터 분석 분야에서 가장 널리 사용되는 파이썬 라이브러리 중 하나입니다. 이 글에서는 파이썬의 딕셔너리(dict)와 리스트(list)를 활용해 판다스 데이터프레임(DataFrame)을 생성하는 방법을 예제와 함께 살펴보겠습니다.리스트를 값으로 가지는 딕셔너리에서 만들기딕셔너리는 키(key)와 값(value)의 쌍으로 구성되는 자료구조입니다. 키에는 문자열, 값에는 리스트가 담긴 딕셔너리라면, 이를 pd.DataFrame() 메서드에 그대로 전달하는 것만으로 손쉽게 데이터프레임을 만들 수 있습니
파이썬으로 행렬(matrix)을 만들다 보면, 결과 행렬에서 특정 요소가 몇 번 반복될지 직접 제어해야 하는 경우가 있습니다. 이 글에서는 요소들이 리스트 형태로 주어졌을 때, 각 요소를 원하는 개수만큼 포함하는 행렬을 만드는 두 가지 방법을 소개합니다. 1. zip 함수 사용하기 먼저 행렬에 사용할 요소들을 담은 리스트를 선언하고, 이어서 각 요소가 행렬에 등장할 횟수를 저장하는 리스트를 선언합니다. 그런 다음 zip 함수로 두 리스트를 묶고, 리스트 컴프리헨션(for 루프)을 활용해 요소를 지정된 횟수만큼 반복한 행렬을 생성
Python에서 두 개의 리스트를 곱하는 연산은 데이터 분석 계산 과정에서 자주 필요합니다. 이 글에서는 리스트의 리스트, 즉 중첩 리스트(nested list)의 각 요소를 다른 리스트의 대응 요소와 곱하는 방법을 소개합니다.반복문(loop) 활용하기이 방식은 두 개의 for 반복문을 중첩하여 사용합니다. 바깥쪽 반복문은 리스트에 포함된 하위 리스트의 개수를 추적하고, 안쪽 반복문은 각 하위 리스트 내부의 요소를 하나씩 처리합니다. * 연산자를 사용해 곱수(multiplier) 리스트의 요소와 중첩 리스트의 대응 요소를 곱한 뒤
파이썬의 dir() 함수는 함수, 모듈, 문자열, 리스트, 딕셔너리 등 모든 객체가 가지고 있는 속성(attribute)과 메서드(method)의 목록을 반환합니다. 디버깅이나 코드 탐색 시 매우 유용한 내장 함수로, 이 글에서는 다양한 상황별로 dir()을 활용하는 방법을 예제와 함께 살펴보겠습니다.1. 인자 없이 dir() 호출하기별도의 모듈을 임포트하지 않은 상태에서 dir()을 호출하면, 파이썬 프로그램이 시작될 때 기본적으로 생성되는 네임스페이스에 존재하는 이름들의 목록이 출력됩니다.예제print(dir())실행 결과[__
프로그래밍을 하다 보면 주어진 리스트에서 중복된 요소를 걸러내고 데이터를 정제해야 하는 경우가 자주 발생합니다. 파이썬은 표준 라이브러리에서 제공하는 다양한 메서드를 조합하여 이 작업을 손쉽게 처리할 수 있습니다. 이번 글에서는 split()과 set(), 그리고 컴프리헨션을 활용해 리스트 내 부분 문자열의 중복을 제거하는 두 가지 방법을 살펴보겠습니다.1. set()과 split() 조합으로 중복 제거split() 메서드는 문자열을 특정 구분자를 기준으로 분리하는 역할을 하며, 분리된 결과물의 중복 여부를 검사하는 데 활용됩니다.
Pandas는 파이썬에서 데이터 처리와 분석에 가장 널리 사용되는 대표적인 라이브러리입니다. 이 글에서는 데이터프레임(DataFrame)에서 행과 열을 필터링해 원하는 데이터만 골라 읽어올 수 있는 .iloc 메서드의 사용법을 예제와 함께 자세히 살펴보겠습니다.iloc 메서드는 정수 기반 인덱스(integer-based index)를 사용해 데이터를 처리합니다. 이 인덱스는 반드시 원본 데이터셋에 포함되어 있을 필요는 없으며, 첫 번째 행에는 0, 두 번째 행에는 1이 순서대로 자동 할당됩니다. 열 역시 마찬가지로 첫 번째 열이 0
어떤 단어가 주어졌을 때, 완전히 동일한 단어가 아니라 해당 단어와 패턴이 비슷한 다른 단어들을 찾고 싶은 경우가 있습니다. 예를 들어 오타 교정이나 추천 검색어 기능을 만들 때 유용하게 활용할 수 있는데요. 이럴 때 파이썬 표준 라이브러리인 difflib 모듈의 get_close_matches 메서드를 사용하면 손쉽게 해결할 수 있습니다.get_close_matches 메서드란?get_close_matches는 difflib 모듈에 포함된 메서드로, 지정한 후보 목록(possibilities) 중에서 주어진 단어와 가장 유사한 항
이 글에서는 주어진 숫자 목록에서 두 수의 차이가 정확히 k와 같은 쌍(pair)의 개수를 세는 방법을 살펴봅니다. 숫자들은 리스트 형태로 제공되며, 프로그램 실행 시 원하는 차이 값 k를 함께 전달합니다. 방법 1: for 루프 사용하기 가장 직관적인 방법은 서로 중첩된 두 개의 for 루프를 사용하는 것입니다. 바깥쪽 루프는 리스트의 각 요소를 하나씩 방문하는 역할을 하고, 안쪽 루프는 현재 요소와 나머지 요소들을 하나씩 비교합니다. 두 요소의 차이가 k와 일치하면 카운트 변수(count)의 값을 1씩 증가시킵니다. 예제 코드
데이터 처리 작업을 하다 보면 리스트에 포함된 요소의 개수를 세어야 하는 경우가 자주 발생합니다. 그런데 리스트 안에 또 다른 리스트가 중첩되어 있으면 단순히 len() 함수만으로는 정확한 개수를 구하기 어렵습니다. 이 글에서는 중첩 리스트까지 고려하여 리스트 내 모든 요소의 개수를 효과적으로 세는 다양한 방법을 소개합니다.1. For 루프와 리스트 컴프리헨션 활용이 방법은 두 개의 for 루프를 사용해 리스트의 중첩 구조를 순회합니다. 아래 예제에서는 내부 요소의 개수가 서로 다른 중첩 리스트를 다루며, 리스트 컴프리헨션으로 리스
문자열이 주어졌을 때, 문자열에서 한 글자씩 제거한 뒤 남은 문자들로 이루어진 문자열을 출력하는 작업이 필요합니다. 이 작업은 문자열의 모든 글자에 대해 각각 수행해야 하므로, 최종적으로 여러 개의 부분 문자열이 만들어집니다.루프와 range를 활용한 방법가장 기본적인 프로그래밍 접근 방식입니다. 먼저 문자열을 선언하고, 시작(start)과 끝(end) 위치 변수를 만든 뒤, 각 글자를 임시로 담아둘 저장소(temp)를 준비합니다. 그다음 재귀 함수를 통해 각 글자를 하나씩 순회하면서 특정 글자를 제외한 나머지 문자들로 새로운 문자
숫자로 이루어진 리스트에서 세 개의 요소를 더했을 때 특정 합이 되는 조합을 찾아야 하는 경우가 자주 있습니다. 이렇게 세 개의 요소로 이루어진 조합을 삼중항(Triplet)이라고 부릅니다. 하나의 리스트 안에는 이러한 삼중항이 여러 개 존재할 수 있습니다. 예를 들어, 합계 10은 1+6+3으로도 만들 수 있고 1+5+4로도 만들 수 있습니다. 이 글에서는 주어진 숫자 리스트에서 이러한 모든 삼중항을 찾는 방법을 알아보겠습니다.range와 임시 변수 활용하기가장 전통적인 접근 방식은 임시 변수를 사용하는 것입니다. 이 변수들에 리