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

Python

  1. 파이썬 정규식(re)으로 문자열에서 가장 많이 등장하는 숫자 찾는 방법

    이 튜토리얼에서는 정규식을 활용해 문자열에서 가장 자주 등장하는 숫자를 찾는 방법을 알아봅니다. 파이썬의 re 모듈과 collections 모듈을 함께 사용하면 몇 줄의 코드로 간단하게 해결할 수 있습니다.구현 순서re 모듈과 collections 모듈을 임포트합니다.숫자가 포함된 문자열을 초기화합니다.정규식으로 문자열에서 모든 숫자를 추출해 리스트에 저장합니다.collections.Counter로 각 숫자의 등장 횟수를 계산하고, 가장 많이 등장한 숫자를 구합니다.예제 코드# 모듈 임포트 import re import collec

  2. 파이썬 time.perf_counter() 함수 완벽 정리 – 코드 실행 시간 측정 방법

    이 튜토리얼에서는 파이썬의 time.perf_counter() 메서드에 대해 자세히 알아보겠습니다.time.perf_counter()는 성능 측정을 위해 설계된 고해상도 타이머로, 초 단위의 시간을 float(부동소수점) 값으로 반환합니다. 이 값은 프로세스가 시작된 이후 경과한 시간을 기준으로 하며, 두 지점 사이의 시간 차이를 계산하는 용도로 사용됩니다.기본 사용 예제# time 모듈 임포트 import time # 현재 perf_counter 값 출력 print(time.perf_counter())실행 결과위 코드를 실행하면

  3. 파이썬 time.process_time() 함수로 프로세스 CPU 시간 측정하기

    이 튜토리얼에서는 파이썬 time.process_time() 메서드의 개념과 실제 활용 방법을 알아보겠습니다.time.process_time()이란?time.process_time()은 현재 프로세스가 시작된 이후 소비한 시스템 CPU 시간과 사용자 CPU 시간의 합계를 초 단위의 부동 소수점(float) 값으로 반환하는 함수입니다.이 함수의 중요한 특징은 다음과 같습니다.프로세스가 실제로 CPU를 사용한 시간만 측정합니다.sleep() 등으로 대기한 시간은 포함되지 않습니다.CPU 연산 위주의 코드 성능을 벤치마킹할 때 유용합니다

  4. 파이썬 time.sleep() 완벽 가이드 – 프로그램 실행 지연시키는 방법

    이 튜토리얼에서는 파이썬의 time.sleep() 메서드에 대해 자세히 알아봅니다. time.sleep()이란? time.sleep()은 프로그램의 실행을 지정한 시간 동안 일시적으로 멈추는 데 사용되는 함수입니다. 이 함수는 인자로 초 단위의 시간을 받으며, 전달된 시간이 경과할 때까지 프로그램의 실행이 중단됩니다. 예를 들어 time.sleep(5)라고 호출하면 프로그램이 정확히 5초간 멈춘 뒤 다음 코드를 실행합니다. 기본 사용 예제 먼저 간단한 예제를 살펴보겠습니다. 아래 코드를 직접 실행하면서 시간 지연 현상을 관찰해 보세

  5. 파이썬 math.trunc() 함수 완벽 정리 – 소수점 버리기의 모든 것

    이 튜토리얼에서는 파이썬의 math.trunc() 메서드에 대해 자세히 알아보겠습니다. math.trunc()란 무엇인가? math.trunc()는 실수(float) 값의 소수점 이하를 잘라내고 정수 부분만 반환하는 함수입니다. truncate(잘라내다)라는 단어에서 알 수 있듯이, 반올림 없이 항상 0을 향한 방향으로 소수 부분을 제거합니다. 흥미로운 점은 숫자의 부호에 따라 다른 함수처럼 동작한다는 것입니다. 양수일 때는 math.floor()(내림)와 동일한 결과를 반환합니다. 음수일 때는 math.ceil()(올림)과 동

  6. 파이썬으로 배열을 길이 K 이상의 증가 부분 수열로 나누는 방법

    문제 개요 오름차순(비내림차순)으로 정렬된 양의 정수 배열 nums와 정수 K가 주어졌을 때, 이 배열을 길이가 각각 K 이상인 하나 이상의 서로 겹치지 않는 증가 부분 수열로 나눌 수 있는지 판별해야 합니다. 예를 들어 nums = [1,2,2,3,3,4,4], K = 3일 때 결과는 True입니다. 배열을 [1,2,3,4]와 [2,3,4]라는 두 부분 수열로 나눌 수 있으며, 각 수열의 길이가 모두 3 이상이기 때문입니다. 접근 방법 핵심은 각 숫자의 등장 빈도입니다. 배열이 정렬되어 있으므로 값이 같은 원소들은 동일한 증가 부

  7. 파이썬으로 푸는 병렬 과목(Parallel Courses) 문제: 위상 정렬로 최소 학기 수 구하기

    N개의 과목이 있으며, 각 과목에는 1부터 N까지 번호가 붙어 있다고 가정해 보겠습니다. 또한 선수 관계를 담은 relations 배열이 주어지는데, relations[i] = [X, Y]는 과목 X와 Y 사이의 선수 관계를 나타냅니다. 다시 말해, 과목 Y를 수강하려면 반드시 먼저 과목 X를 이수해야 합니다.한 학기에는 수강하려는 과목의 선수과목을 모두 이수한 상태라면 여러 과목을 동시에 수강할 수 있습니다. 우리가 구해야 할 값은 모든 과목을 이수하는 데 필요한 최소 학기 수입니다. 만약 어떤 방법으로도 모든 과목을 이수할 수

  8. Python에서 한 문자열을 다른 문자열로 변환할 수 있는지 확인하는 방법

    길이가 같은 두 문자열 str1과 str2가 주어져 있다고 가정해 보겠습니다. 이때 0회 이상의 변환 작업을 거쳐 str1을 str2로 바꿀 수 있는지 판별해야 합니다. 여기서 말하는 한 번의 변환이란, str1에 등장하는 특정 문자 하나를 선택하여 그 문자가 나타나는 모든 위치를 다른 소문자 영어 알파벳으로 일괄 변경하는 것을 의미합니다. 목표는 이러한 변환만으로 str1을 str2와 완전히 같게 만들 수 있는지 확인하는 것입니다. 예제로 이해하기 예를 들어 str1 = aabcc, str2 = ccdee가 입력으로 주어진 경우

  9. Python으로 마을 물 공급 비용 최적화하기: MST와 Union-Find 활용법

    문제 소개마을에 n개의 집이 있다고 가정해 보겠습니다. 우리는 우물을 짓고 파이프를 깔아 모든 집에 물을 공급해야 하며, 각 집 i에는 두 가지 선택지가 있습니다.집 안에 우물 짓기: 비용은 wells[i]로 주어집니다.다른 우물에서 파이프로 물 끌어오기: 집 사이 파이프 설치 비용은 배열 pipes로 주어지며, 각 pipes[i]는 [house1, house2, cost] 형태로 house1과 house2를 연결하는 비용을 의미합니다. 연결은 양방향입니다.목표는 모든 집에 물을 공급하는 최소 총비용을 구하는 것입니다. 예를 들어

  10. Python으로 행렬에서 가장 긴 증가 경로 찾기 (DFS + 메모이제이션)

    문제 개요하나의 행렬(matrix)이 주어졌을 때, 가장 긴 증가 경로(longest increasing path)의 길이를 구하는 문제입니다. 각 칸에서는 상하좌우 네 방향(왼쪽, 오른쪽, 위, 아래)으로만 이동할 수 있으며, 대각선 이동이나 행렬 경계 밖으로의 이동은 허용되지 않습니다.예를 들어 다음과 같은 행렬이 입력으로 주어진다고 가정해 보겠습니다.994668211이 경우 출력값은 4입니다. 초록색으로 표시된 칸들을 따라 [1, 2, 6, 9] 경로가 만들어지는데, 왼쪽 아래의 1에서 시작해 2 → 6 → 9 순서로 값을 증

  11. Python으로 구현하는 LFU 캐시: 최소 빈도 사용 캐시 설계와 코드 예제

    캐시 시스템을 설계할 때 어떤 데이터를 먼저 내보낼지 결정하는 기준은 전체 성능에 큰 영향을 미칩니다. 이번 글에서는 LFU(Least Frequently Used, 최소 빈도 사용) 방식의 캐시를 Python으로 직접 설계하고 구현하는 방법을 단계별로 살펴보겠습니다. LFU 캐시가 지원해야 할 연산 LFU 캐시용 자료구조는 다음 두 가지 연산을 지원해야 합니다. get(key) – 키가 캐시에 존재하면 해당 키의 값을 반환하고, 존재하지 않으면 -1을 반환합니다. put(key, value) – 키가 아직 캐시에 없다면 새로운

  12. Python openpyxl로 엑셀 파일 산술 연산 자동화하기

    개요Python을 사용하면 파이썬 환경에서 직접 엑셀 파일을 다룰 수 있습니다. 엑셀의 각 셀이나 특정 범위의 셀을 참조하여 산술 연산자를 적용할 수 있으며, 연산 결과 역시 파이썬 코드에서 지정한 위치의 셀에 저장할 수 있습니다. 이를 통해 반복적인 데이터 계산 작업을 손쉽게 자동화할 수 있습니다.아래 예제에서는 엑셀의 내장 함수를 활용해 다양한 산술 연산을 수행합니다. 셀에 입력된 숫자들의 합계(SUM), 평균(AVERAGE), 곱(PRODUCT), 개수(COUNT)를 계산하고 그 결과를 지정된 셀에 저장합니다. openpyxl

  13. 파이썬 Tkinter asksaveasfile() 함수로 파일 저장하는 방법

    Tkinter는 파이썬에서 GUI 프로그래밍을 위해 사용되는 표준 라이브러리입니다. 캔버스(Canvas)를 생성하고 그 안에 다양한 속성과 동작을 지닌 UI 컴포넌트를 배치하여 데스크톱 애플리케이션을 만들 수 있습니다. 이 글에서는 asksaveasfile() 함수를 사용하여 파이썬 프로그램에서 생성한 파일을 로컬 드라이브에 저장하는 방법을 살펴보겠습니다. asksaveasfile() 함수란? asksaveasfile()은 tkinter.filedialog 모듈에서 제공하는 함수로, 파일 저장 대화상자를 열어 사용자가 저장 위치와

  14. Python 리스트에서 길이 n 연속 구간의 평균 구하기

    숫자로만 이루어진 리스트가 있을 때, 첫 번째 요소부터 시작해 한 칸씩 이동하면서 길이가 n인 연속 구간의 평균을 차례대로 구하는 방법을 알아보겠습니다. 흔히 말하는 슬라이딩 윈도우 방식으로, 시계열 데이터에서 이동평균을 계산할 때 자주 쓰이는 패턴입니다. 예시 아래 예시는 리스트에서 길이 4인 연속 요소들의 평균을 구하는 과정을 단순화해 보여줍니다. 주어진 리스트: [10, 12, 14, 16, 18, 20, 22, 24, 26] 4개씩 연속된 숫자 구간의 평균: [13.0, 15.0, 17.0, 19.0, 21.0, 23.0

  15. Python에서 인스턴스 간에 공유되는 클래스 데이터 피하기

    Python에서 클래스를 인스턴스화하면 해당 클래스에 정의된 모든 변수와 함수가 새로 생성된 인스턴스에 상속됩니다. 특히 클래스 레벨에서 선언된 가변(mutable) 객체는 모든 인스턴스가 하나의 객체를 함께 참조하게 되어, 의도치 않게 데이터가 공유되는 문제가 발생할 수 있습니다. 하지만 때로는 부모 클래스의 일부 변수를 인스턴스들이 공유하지 않기를 원하는 경우도 있습니다. 이 글에서는 이러한 문제를 해결하는 두 가지 방법을 코드 예제와 함께 살펴보겠습니다.문제 상황: 인스턴스화 예제아래 예제는 클래스 본문에 직접 선언된 변수가

  16. Python bisect 모듈 완벽 정리: insort_left와 insort_right 함수 사용법

    Python의 bisect 모듈은 새로운 요소를 삽입할 때마다 리스트 전체를 다시 정렬할 필요 없이, 리스트가 항상 정렬된 상태를 유지하도록 도와주는 표준 라이브러리입니다. 내부적으로 이진 탐색(binary search) 알고리즘을 기반으로 동작하며, 대표적인 함수로 insort_left와 insort_right가 있습니다. insort_left 함수 bisect.insort_left()는 지정한 값을 리스트의 적절한 위치에 삽입한 후 정렬된 리스트를 반환합니다. 만약 동일한 값이 이미 리스트에 존재한다면, 새 값은 해당 값들 중

  17. 파이썬 NumPy 배열 브로드캐스팅 완벽 가이드: 서로 다른 크기의 배열 연산하기

    NumPy에서 산술 연산은 기본적으로 배열의 크기가 같거나 호환 가능한 경우에만 수행됩니다. 하지만 브로드캐스팅(Broadcasting)을 활용하면 크기가 다른 배열 간에도 산술 연산을 적용할 수 있습니다. 브로드캐스팅이란 더 작은 차원(ndim)을 가진 배열의 형태(shape) 앞에 1을 추가하고, 이를 필요한 형태로 확장하여 연산이 가능하도록 만드는 메커니즘입니다. 즉, 실제로 데이터를 복사하지 않으면서도 배열의 형태를 유연하게 변형해 연산을 수행하는 효율적인 방식입니다.배열 브로드캐스팅의 규칙차원(ndim)이 더 작은 배열의

  18. 파이썬(Python)에서 주어진 리스트를 중첩 리스트로 변환하는 방법

    리스트에 담긴 각 요소를 개별적인 리스트로 변환해야 하는 상황이 종종 발생합니다. 다시 말해, 요소 자체가 리스트로 구성된 중첩 리스트(nested list)를 만드는 것이죠. 이번 글에서는 파이썬에서 이러한 변환을 수행하는 두 가지 방법을 살펴보겠습니다. 1. 반복문(iteration) 활용하기 가장 기본적인 접근 방식은 반복문을 사용하는 것입니다. 원본 리스트의 각 요소를 순회하면서 해당 요소를 리스트 형태로 변환하고, 임시 리스트를 활용해 결과를 누적합니다. 마지막에는 리스트로 변환된 모든 요소를 하나로 묶어 원하는 형태의 리

  19. Python - 리스트를 None 값의 딕셔너리로 변환하는 방법

    파이썬 프로그래밍을 하다 보면 리스트를 딕셔너리로 변환해야 하는 경우가 종종 있습니다. 딕셔너리의 각 요소는 키(key)와 값(value)으로 구성된 키-값 쌍이며, 이 글에서는 리스트의 요소들을 키로 사용하고, 값 자리에는 None을 플레이스홀더(자리표시자)로 남겨두는 방법을 소개합니다.예를 들어, 초기화 작업이나 나중에 값을 채워 넣을 목적으로 빈 값(None)을 가진 딕셔너리를 미리 만들어야 할 때 유용하게 활용할 수 있습니다.1. dict.fromkeys() 활용하기파이썬의 dict() 생성자는 딕셔너리를 만들 때 사용됩니다

  20. Python – 두 딕셔너리의 키 차이 구하는 방법

    두 개의 Python 딕셔너리는 서로 일부 키를 공유하는 경우가 많습니다. 이 글에서는 주어진 두 딕셔너리에서 공통되지 않은 키, 즉 키의 차이를 구하는 대표적인 두 가지 방법을 예제 코드와 함께 살펴보겠습니다. 1. set() 함수로 차집합 구하기 첫 번째 방법은 딕셔너리를 set() 함수로 집합으로 변환한 뒤 차집합(-) 연산을 수행하는 것입니다. 첫 번째 딕셔너리에서 두 번째 딕셔너리를 뺀 결과와, 반대로 두 번째에서 첫 번째를 뺀 결과를 모두 구하면 양쪽에 공통으로 존재하지 않는 키들이 각각 나열됩니다. 예제 코드 dictA

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:153/450  20-컴퓨터/Page Goto:1 147 148 149 150 151 152 153 154 155 156 157 158 159