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

Python

  1. 파이썬으로 2048 게임 보드를 한 번 슬라이드한 후 다음 상태 구하기

    문제 개요2048 게임의 초기 보드(board)와 스와이프 방향을 나타내는 문자열(direction)이 주어졌을 때, 해당 방향으로 한 번 슬라이드한 이후의 다음 보드 상태를 구하는 프로그램을 작성해야 합니다.2048 게임은 숫자가 채워진 4 x 4 크기의 보드에서 진행됩니다. 일부 칸은 비어 있으며, 여기서는 0으로 표현합니다. 플레이어는 U(위), D(아래), L(왼쪽), R(오른쪽) 네 방향 중 하나로 보드를 밀 수 있습니다. 슬라이드하면 모든 숫자가 해당 방향으로 최대한 이동하고, 인접해 있는 같은 숫자끼리는 정확히 한 번만

  2. 파이썬에서 *args와 **kwargs로 임의 개수의 인수를 받는 함수 작성하는 방법

    문제 상황입력값이 두 개든 세 개든, 혹은 그 이상이든 관계없이 어떤 개수의 인수라도 유연하게 받아 처리할 수 있는 함수를 만들고 싶다면 어떻게 해야 할까요? 파이썬에서는 특별한 문법을 사용하면 아주 간단하게 해결할 수 있습니다.해결 방법: *args로 가변 위치 인수 받기파이썬에서 함수를 정의할 때 매개변수 이름 앞에 별표(*)를 붙이면, 호출 시 전달되는 모든 추가 위치 인수를 하나의 튜플(tuple)로 묶어 받습니다. 아래 예제는 주어진 숫자들의 평균을 구하는 함수입니다. 여기서 rest_arg는 첫 번째 인수를 제외한 나머지

  3. 파이썬 Pandas에서 결측값(NaN)이 있는 두 DataFrame을 비교하는 방법

    들어가며Pandas는 데이터 속 결측값(missing value)을 표현하기 위해 NumPy의 NaN 객체(np.nan)를 사용합니다. 이 NaN 값은 흥미로운 수학적 특성을 지니고 있습니다. 예를 들어 NaN은 자기 자신과도 같지 않습니다. 반면 파이썬의 None 객체는 자기 자신과 비교하면 True로 평가됩니다.np.nan의 특수한 동작 방식간단한 예제를 통해 np.nan이 어떻게 동작하는지 살펴보겠습니다.import pandas as pd import numpy as np # 파이썬 None 객체를 자기 자신과 비교 prin

  4. Python 딕셔너리로 계산하기: min(), max(), zip()으로 최솟값·최댓값 찾고 정렬하는 방법

    문제 상황데이터가 담긴 딕셔너리(dictionary)를 대상으로 최솟값 구하기, 최댓값 구하기, 정렬하기 같은 다양한 계산을 수행하고 싶은 경우가 있습니다. 이 글에서는 실제 예제를 통해 딕셔너리 계산의 여러 접근 방식과 각 방식의 장단점을 살펴보겠습니다.해결 방법먼저 테니스 선수 이름과 각 선수가 획득한 그랜드슬램 타이틀 수를 담은 딕셔너리를 만들어 보겠습니다.PlayerTitles = { Federer: 20, Nadal: 20, Djokovic: 17, Murray: 3, Theim: 1,

  5. 파이썬으로 i개의 'x', j개의 'y', k개의 'z'가 이어지는 부분 수열 개수 구하기

    문제 설명x, y, z 세 종류의 문자로만 이루어진 문자열 s가 주어졌을 때, i개의 x 문자 뒤에 j개의 y 문자, 그리고 그 뒤에 k개의 z 문자가 순서대로 이어지는 부분 수열(subsequence)의 개수를 구하는 프로그램을 작성해야 합니다. 단, i, j, k는 모두 1 이상입니다.예를 들어 입력이 s = xxyz라고 가정해 보겠습니다. 이때 출력은 3이 됩니다. 앞쪽의 두 x 중 하나를 선택해 만드는 xyz 부분 수열이 두 개 있고, 두 x를 모두 사용한 xxyz 부분 수열이 하나 있기 때문입니다.풀이 접근 방식이 문제는

  6. 파이썬 스타 표현식(*)으로 언패킹하기 – Catch-all 언패킹 완벽 가이드

    들어가며파이썬에서 시퀀스를 언패킹(unpacking)할 때 기본적으로 가지는 제약 중 하나는, 언패킹하려는 시퀀스의 길이를 미리 정확히 알고 있어야 한다는 점입니다. 하지만 실무에서는 길이를 미리 알 수 없거나, 일부 값만 필요한 경우가 많습니다.이런 상황에서 유용하게 쓸 수 있는 것이 바로 스타 표현식(starred expression)을 활용한 catch-all 언패킹입니다. 이 글에서는 문제 상황부터 해결 방법, 그리고 반드시 알아야 할 주의사항까지 예제와 함께 살펴보겠습니다.문제 상황: 길이를 모르면 언패킹에 실패한다먼저 내

  7. 파이썬으로 연결 리스트(Linked List)로 표현된 두 숫자의 합 구하기

    문제 개요두 개의 단일 연결 리스트(singly linked list) L1과 L2가 있다고 가정해 봅시다. 각 리스트는 숫자를 최하위 자릿수(일의 자리)부터 앞쪽에 배치하여 표현합니다. 우리가 해야 할 일은 이 두 숫자를 더한 결과를 담은 새로운 연결 리스트를 만드는 것입니다.예를 들어 입력이 다음과 같다고 해보겠습니다.L1 = [5, 6, 4] → 숫자 465L2 = [2, 4, 8] → 숫자 842이 경우 465 + 842 = 1307이므로, 출력은 [7, 0, 3, 1]이 됩니다.해결 접근 방법이 문제는 마치 손으로 두 숫자

  8. 문자열 T에서 S의 모든 아나그램 시작 인덱스를 찾는 방법 (슬라이딩 윈도우 알고리즘)

    두 개의 문자열 S와 T가 주어졌을 때, 문자열 T 안에서 S의 아나그램(anagram)이 나타나는 모든 시작 인덱스를 찾아야 합니다. 문자열은 소문자로만 구성되며, S와 T의 길이는 각각 20과 100을 넘지 않는다고 가정합니다.예를 들어 입력이 S = cab, T = bcabxabc라고 한다면, 출력은 [0, 1, 5]가 됩니다. 이는 부분 문자열 bca, cab, abc가 각각 인덱스 0, 1, 5에서 시작되는 S의 아나그램이기 때문입니다.해결 접근 방식이 문제는 슬라이딩 윈도우(Sliding Window) 기법과 문자 빈도수

  9. Python에서 SQLite3 데이터베이스를 만들고 Pandas로 데이터를 조회하는 방법

    소개실제 기업 비즈니스 환경에서는 대부분의 데이터가 텍스트나 엑셀 파일 형태로 저장되지 않습니다. Oracle, SQL Server, PostgreSQL, MySQL과 같은 SQL 기반 관계형 데이터베이스가 널리 사용되고 있으며, 그 외의 대체 데이터베이스들 역시 상당한 인기를 얻고 있습니다.데이터베이스 선택은 일반적으로 애플리케이션의 성능, 데이터 무결성, 확장성 요구 사항에 따라 달라집니다.SQLite3 데이터베이스 생성 방법이번 예제에서는 SQLite3 데이터베이스를 생성하는 방법을 살펴보겠습니다. SQLite는 파이썬 설치

  10. 파이썬 filecmp 모듈로 파일과 디렉터리 비교하기

    파이썬에서 파일 비교하기 파이썬 표준 라이브러리의 filecmp 모듈을 사용하면 파일과 디렉터리의 내용을 효율적으로 비교할 수 있습니다. 이 모듈은 메타데이터 기반의 빠른 비교부터 바이트 단위의 정밀 비교, 디렉터리 전체의 재귀적 비교까지 다양한 기능을 제공합니다. 주요 함수와 클래스 1. filecmp.cmp() - 단일 파일 비교 cmp(file1, file2, shallow=True) 두 파일을 비교하여 동일하면 True, 다르면 False를 반환합니다. shallow=True (기본값): os.stat()이 반환하는

  11. Python linecache 모듈로 텍스트 파일을 줄 단위로 읽는 방법

    linecache 모듈이란?파이썬의 linecache 모듈은 파일의 내용을 줄(line) 단위로 분할하여 메모리에 캐시로 보관하는 기능을 제공합니다. 이 모듈은 리스트 인덱싱 방식으로 원하는 줄을 반환하기 때문에, 파일을 반복해서 열고 매번 전체 내용을 읽어 파싱하는 것보다 훨씬 적은 시간으로 특정 줄에 접근할 수 있습니다.특히 동일한 파일에서 여러 줄을 반복적으로 조회해야 하는 경우 linecache 모듈이 매우 유용합니다. 파일을 한 번만 읽어 캐시에 저장한 뒤에는 이후 모든 접근이 메모리에서 바로 이루어지기 때문입니다.테스트

  12. Python mmap 완벽 가이드: 메모리 매핑으로 파일 읽기 성능 극대화하기

    들어가며: mmap이란 무엇인가?mmap은 메모리 매핑(memory mapping)의 약자입니다. 파일을 메모리에 매핑하면 운영체제의 가상 메모리를 활용해 일반적인 I/O 함수 대신 파일 시스템의 데이터에 직접 접근할 수 있습니다. 이 방식은 접근할 때마다 별도의 시스템 콜을 호출하거나 버퍼 간에 데이터를 복사할 필요가 없기 때문에 I/O 성능이 크게 향상됩니다.실제로 메모리에 존재하는 데이터는 디스크 기반보다 빠릅니다. 예를 들어 SQLite 데이터베이스를 인메모리(in-memory)로 생성하면 디스크에 저장했을 때보다 훨씬 좋은

  13. Python에서 우선순위 큐(Priority Queue) 구현하는 방법 완벽 가이드

    들어가며: queue 모듈이란?Python의 queue 모듈은 멀티스레드 프로그래밍에 적합한 선입선출(FIFO), 후입선출(LIFO) 자료구조를 제공합니다. 큐는 생성자(producer) 스레드와 소비자(consumer) 스레드 사이에서 세션 정보, 경로, 변수 등 다양한 데이터를 안전하게 전달하는 데 활용될 수 있습니다. 또한 락(lock) 처리는 호출자를 위해 내부적으로 자동으로 수행되므로, 개발자가 직접 동기화를 관리할 필요가 없습니다.참고: 이 글은 독자가 큐의 기본 개념을 이미 이해하고 있다고 가정하고 진행됩니다. 큐에 대

  14. Python에서 텍스트를 검색하고 바꾸는 방법 총정리

    문제 상황문자열 안에서 특정 텍스트 패턴을 검색하거나 다른 문자열로 교체해야 하는 경우가 자주 있습니다. 패턴이 단순한 리터럴(literal) 문자열이라면 파이썬 내장 메서드인 str.replace()만으로도 충분하지만, 패턴이 복잡해지면 정규 표현식(regular expression)과 re 모듈을 활용하는 것이 좋습니다.예제 데이터 준비먼저 실습에 사용할 문자열을 생성합니다. 제너레이터로 단어를 하나씩 만들고 공백으로 연결했습니다.def sample(): yield Is yield USA yield Cold

  15. Python에서 문자열의 시작과 끝 텍스트 매칭하기: startswith()와 endswith() 활용법

    문제 상황문자열의 시작 부분이나 끝 부분에 특정 텍스트 패턴이 있는지 확인해야 하는 경우가 자주 있습니다. 대표적인 예로 파일 확장자 검사가 있지만, 실제로는 어떤 패턴이든 응용할 수 있습니다. 이 글에서는 Python으로 문자열의 앞뒤를 손쉽게 검사하는 다양한 방법을 소개합니다.startswith() 메서드로 문자열 시작 확인하기문자열이 특정 텍스트로 시작하는지 확인하는 가장 간단한 방법은 startswith() 메서드를 사용하는 것입니다. 이 메서드는 조건이 일치하면 True, 그렇지 않으면 False를 반환합니다.기본 예제te

  16. 파이썬 Matplotlib로 여러 그래프를 하나의 차트에 결합하는 방법

    소개Matplotlib는 하나의 그래프 위에 두 개 이상의 플롯을 겹쳐 그릴 수 있는 파이썬 대표 시각화 라이브러리입니다. 이 튜토리얼에서는 서로 다른 두 개의 y축을 활용해 여러 데이터를 한 화면에 표현하는 방법과, 여러 개의 서브플롯(subplot)을 결합해 하나의 완성된 차트를 만드는 과정을 단계별로 알아봅니다.사전 준비: Matplotlib 설치먼저 파이썬 명령 프롬프트(터미널)를 열고 pip 명령어로 Matplotlib를 설치합니다.pip install matplotlib설치가 끝나면 다음과 같이 pyplot 모듈을 임포트

  17. Python argparse로 선택적 인수(Optional Argument)를 만드는 방법

    소개 프로그램을 작성하다 보면 인수가 제공되면 해당 값을 사용하고, 제공되지 않으면 미리 정의된 기본값으로 동작하도록 만들어야 하는 경우가 자주 있습니다. 이번 글에서는 Python 표준 라이브러리의 argparse 모듈을 사용해 이러한 선택적 인수를 처리하는 방법을 알아보겠습니다. 규칙은 간단합니다. 대시(--)로 시작하는 매개변수는 선택적(optional) 인수로 취급됩니다. 생략할 수 있으며, 기본값(default)을 가질 수 있습니다. 대시로 시작하지 않는 매개변수는 위치 인수(positional argument)로, 일반

  18. Python으로 CSV·텍스트·MS Word 등 다양한 문서 형식에서 문자열 검색하기

    문제 상황여러 형식의 파일이 가득한 디렉터리가 있고, 그 안에서 특정 키워드를 찾아야 한다고 가정해 보겠습니다. 파일 확장자마다 읽는 방식이 다르기 때문에 일일이 열어 확인하는 것은 비효율적입니다. 이 글에서는 Python으로 이 과정을 자동화하는 방법을 단계별로 살펴봅니다.사전 준비먼저 아래 두 패키지를 설치합니다.1. beautifulsoup4 — 텍스트 파일의 인코딩을 자동으로 판별하는 UnicodeDammit 기능을 사용하기 위해 필요합니다.2. python-docx — MS Word(.docx) 문서를 읽고 처리하기 위해

  19. Python으로 멀티스레드 큐(Queue) 구현하는 방법

    소개 이 글에서는 실행해야 할 모든 작업을 담아두는 작업 대기열(큐)과, 이 큐와 상호작용하며 요소를 하나씩 꺼내 처리하는 스레드 풀을 만들어 보겠습니다. 먼저 큐(Queue)란 무엇일까?라는 질문부터 시작해 보겠습니다. 큐는 서로 다른 요소들을 아주 특정한 순서로 관리하는 자료구조입니다. 실생활의 예를 통해 쉽게 이해해 보겠습니다. 마트 계산대 앞에 줄을 서서 계산을 기다리고 있다고 상상해 보세요. 계산을 기다리는 사람들의 줄에서는 다음과 같은 규칙이 지켜집니다. 사람들은 줄의 한쪽 끝에서 들어와 반대쪽 끝에서 나갑니다. A가

  20. Python으로 API 결과 시각화하기: GitHub 데이터 실습 가이드

    소개API를 활용하는 가장 큰 장점 중 하나는 최신 데이터를 실시간으로 가져올 수 있다는 점입니다. 데이터가 빠르게 변하더라도 API는 항상 최신 상태의 데이터를 제공합니다. API 프로그램은 특정 정보를 요청하기 위해 매우 구체적인 URL을 사용합니다. 예를 들어 Spotify나 YouTube Music에서 2020년 가장 많이 재생된 인기 곡 TOP 100을 요청하는 식입니다. 요청된 데이터는 JSON이나 CSV처럼 손쉽게 처리할 수 있는 형식으로 반환됩니다.Python을 사용하면 거의 모든 URL에 대해 API 호출을 작성할

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:184/450  20-컴퓨터/Page Goto:1 178 179 180 181 182 183 184 185 186 187 188 189 190