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

Python

  1. 파이썬 print() 함수의 end 매개변수 활용법

    파이썬의 print() 함수는 기본적으로 출력 후 자동으로 줄바꿈(newline)을 추가합니다. 하지만 이 함수에는 end라는 매개변수가 있어, 출력 끝부분에 줄바꿈 문자 대신 원하는 다른 문자나 문자열을 지정할 수 있습니다. 이번 글에서는 end 매개변수의 다양한 활용 옵션을 살펴보겠습니다. end 매개변수란? end 매개변수는 print() 함수의 출력이 끝난 뒤 덧붙여질 문자열을 결정합니다. 기본값은 줄바꿈 문자(\n)이며, 이 값을 변경하면 같은 줄에 여러 내용을 이어서 출력하거나 특정 구분자를 붙여 출력하는 등 다양한 형태

  2. 파이썬 abs() vs fabs(): 절댓값 함수의 차이점 완벽 정리

    파이썬에서 abs()와 math.fabs()는 모두 숫자의 절댓값(absolute value)을 구하는 수학 함수입니다. 두 함수는 비슷해 보이지만, 반환되는 값의 자료형과 처리 가능한 입력 범위에서 미묘하지만 중요한 차이가 있습니다. 아래 예제를 통해 이 차이를 자세히 살펴보겠습니다. abs()와 fabs()의 주요 차이점 abs() 함수는 내장 함수로, 입력값에 따라 절댓값을 정수(int) 또는 부동소수점(float)으로 반환합니다. 즉, 정수를 넣으면 정수가, 실수를 넣으면 실수가 그대로 반환됩니다. 반면 math.fabs(

  3. 파이썬(Python) 딕셔너리에서 특정 키만 필터링하는 방법

    파이썬에서 딕셔너리(dictionary)를 다루다 보면 특정 조건에 맞는 키만 골라내야 하는 경우가 종종 발생합니다. 예를 들어 전체 데이터 중에서 필요한 항목만 추출하거나, 불필요한 키를 제거한 새로운 결과를 만들어야 할 때가 그렇습니다. 이 글에서는 파이썬 딕셔너리에서 원하는 키를 필터링하는 대표적인 두 가지 방법을 예제 코드와 함께 살펴보겠습니다.1. for 문과 in 연산자 활용가장 직관적인 방법은 필터링할 키들을 리스트에 담아두고, 리스트의 각 요소를 순회하면서 해당 키가 딕셔너리에 존재하는지 확인하는 것입니다. 존재하는

  4. Python NumPy 실수 배열에서 정수 제거하기 – 필터링 방법 2가지

    데이터 정제(data cleansing) 작업을 하다 보면 배열에서 정수를 걸러내고 실수(float) 값만 남겨야 하는 경우가 종종 있습니다. 이 글에서는 정수와 실수가 섞여 있는 NumPy 배열에서 정수를 제거하고 실수만 추출하는 두 가지 방법을 예제 코드와 함께 소개합니다.방법 1: astype 함수 활용astype 함수는 배열의 각 요소를 정수형(int)으로 변환하는 기능을 합니다. 이를 활용해 원래 값과 정수로 변환한 값을 비교하면, 해당 요소가 정수인지 아닌지 판별할 수 있습니다. 변환 전후 값이 다르면 소수 부분을 가진

  5. 파이썬 Pandas query() 메서드로 데이터 필터링하는 방법

    Pandas는 데이터 정제, 데이터 분석 등에 폭넓게 사용되는 파이썬 라이브러리입니다. 이 글에서는 query 메서드를 활용해 주어진 데이터셋에서 특정 데이터만 추출하는 방법을 살펴보겠습니다. query 메서드에는 단일 조건뿐 아니라 여러 조건을 함께 지정할 수도 있습니다.데이터 불러오기먼저 pandas 라이브러리를 사용해 데이터를 데이터프레임으로 불러오겠습니다. 아래 프로그램이 바로 그 작업을 수행합니다.예제import pandas as pd # CSV 파일에서 데이터프레임 읽기 data = pd.read_csv(D:\\hear

  6. 파이썬으로 풀어보는 박스 밀기 시뮬레이션: 문자열의 최종 상태 구하기

    문제 소개 길이가 n인 문자열 S가 있다고 가정해 봅시다. 이 문자열은 서로 인접하게 늘어선 n개의 상자를 나타내며, 각 위치의 문자는 다음과 같은 의미를 가집니다. R — 해당 위치의 상자가 오른쪽으로 밀려나고 있음 L — 해당 위치의 상자가 왼쪽으로 밀려나고 있음 . — 빈 공간 초기 배치에서 시작해 매 시간 단위마다 오른쪽으로 밀리는 상자는 바로 옆 상자를 오른쪽으로 밀어낼 수 있으며, 왼쪽 방향도 동일하게 적용됩니다. 목표는 더 이상 어떤 움직임도 일어나지 않는 시점의 모든 상자의 최종 위치를 구하는 것입니다. 예를 들어

  7. Python에서 gcd(N^M, N&M)이 최대가 되도록 만드는 양수 M 찾기

    숫자 N이 주어졌을 때, gcd(N^M, N&M)의 값이 최대가 되도록 하면서 조건 M < N을 만족하는 양수 M을 찾는 것이 이번 문제의 목표입니다. 마지막에는 구할 수 있는 최대 gcd 값도 함께 반환해야 합니다.예를 들어 입력값이 20이라면 결과는 31이 됩니다.해결 전략이 문제의 핵심은 비트 연산의 성질을 활용하는 것입니다. XOR과 AND의 최대공약수(gcd)를 극대화하기 위해 다음 두 가지 경우로 나누어 접근합니다.1. N의 이진수 표현에 0인 비트가 존재하는 경우N을 이진수로 나타냈을 때 0인 자리를 모두

  8. Python으로 선형 시간 O(n)에 크기 3의 정렬된 부분 수열 찾기

    문제 소개N개의 숫자로 이루어진 배열이 주어졌을 때, b[i] < b[j] < b[k]를 만족하면서 인덱스 순서가 i < j < k인 세 원소를 선형 시간, 즉 O(n) 복잡도 안에 찾아야 합니다. 조건을 만족하는 삼중 항이 여러 개라면 그중 하나만 출력하면 됩니다.예를 들어 입력 배열이 [13, 12, 11, 6, 7, 3, 31]이라면, 결과는 [6, 7, 31]이 됩니다.접근 방법이 문제는 단순한 세 겹 반복문으로 풀면 O(n³)이 걸리지만, 보조 배열 두 개를 활용하면 한 번의 순회로 해결할 수 있습니다

  9. Python에서 모든 문자가 바로 다음 문자보다 사전순으로 큰 문자열 찾기

    문제 개요 하나의 숫자 n이 주어졌을 때, 길이가 n+1인 소문자 문자열을 구성해야 합니다. 단, 임의 위치의 문자는 반드시 바로 뒤에 있는 문자보다 사전순(lexicographically)으로 커야 합니다. 예를 들어 입력이 15라면 출력은 ponmlkjihgfedcba입니다. p에서 a까지 총 16개(= n+1)의 문자가 알파벳 역순으로 배열되어 있어, 모든 위치에서 현재 문자가 다음 문자보다 크다는 조건을 만족합니다. 풀이 접근 방법 핵심 아이디어는 알파벳을 거꾸로 나열한 기준 문자열(zyxwvutsrqponmlkjihgfe

  10. 파이썬(Python)으로 문자열의 모든 고유한 회문 부분 문자열 찾기

    문제 정의소문자 ASCII 문자로만 구성된 문자열이 주어졌을 때, 해당 문자열 안에 존재하는 모든 고유한(중복 없는) 연속 회문(palindrome) 부분 문자열을 찾아야 합니다.예를 들어 입력 문자열이 bddaaa라면, 찾아야 할 회문들은 다음과 같습니다.[a, aa, aaa, b, d, dd]풀이 접근 방법이 문제는 마나커(Manacher) 알고리즘의 원리를 응용하면 효율적으로 해결할 수 있습니다. 핵심 아이디어는 각 위치에서 회문을 처음부터 확장하는 대신, 이미 계산된 회문 반지름 정보를 재활용하여 불필요한 비교를 줄이는 것입

  11. 파이썬(Python)으로 배열에서 모든 '좋은 인덱스' 찾기

    문제 개요 숫자로 이루어진 배열 A가 주어졌을 때, i번째 원소를 삭제한 뒤 남은 배열이 좋은 배열(good array)이 되도록 하는 모든 인덱스 i를 찾아야 합니다. 이때 다음 두 가지를 기억해야 합니다. 좋은 배열: 배열 안의 어떤 한 원소가 나머지 모든 원소의 합과 정확히 같은 배열 인덱스는 1부터 시작하는 1-based indexing을 사용 예시 입력이 [10, 4, 6, 2]라면 출력은 [1, 4]입니다. A[1](값 10)을 삭제하면 배열은 [4, 6, 2]가 되고, 6 = 4 + 2이므로 좋은 배열입니다. A[

  12. 파이썬으로 문자열 내 모든 회문 부분 문자열 찾기 - Set 2

    개요문자열이 하나 주어졌을 때, 해당 문자열에서 발견할 수 있는 모든 회문(palindrome) 부분 문자열을 찾는 문제를 살펴보겠습니다. 여기서 중요한 점은 동일한 회문이라도 위치가 다르면 서로 다른 부분 문자열로 간주한다는 것입니다. 예를 들어 aa가 두 번 등장하면 두 개의 별도 부분 문자열로 셉니다.입력이 redivider라고 가정해 보겠습니다. 이 문자열은 전체적으로 좌우 대칭이므로 다음과 같은 출력 결과를 얻게 됩니다.[r, e, d, i, v, ivi, divid, edivide, redivider, i, d, e, r

  13. Python으로 2D 행렬에서 0으로 채워진 모든 사각형 찾기

    이진(binary) 값으로 구성된 2차원 행렬이 주어졌을 때, 0으로 채워진 모든 사각형의 시작 좌표와 끝 좌표를 찾는 문제를 생각해 봅시다. 여기서 중요한 조건은 각 사각형이 서로 분리되어 있어 서로 맞닿지 않는다는 점입니다. 다만 사각형은 배열의 경계와는 닿을 수 있으며, 요소가 하나뿐인 작은 사각형도 존재할 수 있습니다.문제 예시예를 들어 아래와 같은 입력 행렬이 주어졌다고 가정해 보겠습니다.10111011101111101100110110011011011101000011100011011101이 경우 기대되는 출력은 다음과 같습

  14. Python으로 숫자의 각 자릿수에 매핑된 문자 조합 모두 찾기

    문제 소개: 숫자–문자 매핑1부터 9까지의 각 숫자가 여러 개의 문자에 대응되는 매핑이 다음과 같이 주어져 있다고 가정해 보겠습니다.1 -> [A, B, C] 2 -> [D, E, F] 3 -> [G, H, I] 4 -> [J, K, L] 5 -> [M, N, O] 6 -> [P, Q, R] 7 -> [S, T, U] 8 -> [V, W, X] 9 -> [Y, Z]하나의 숫자가 주어졌을 때, 각 자릿수를 위 매핑 테이블의 문자로 치환하여 만들 수 있는 모든 문자열을 출력해야 합니다.

  15. 파이썬으로 배열에서 엄격한 감소·증가 수열을 이루는 전환점 요소 찾기

    문제 개요양의 정수로 구성된 배열이 하나 주어져 있다고 가정해 보겠습니다. 이 배열 안에서 어느 한 지점(요소)을 기준으로, 그 지점까지는 엄격하게 감소하는(strictly decreasing) 수열이 만들어지고, 그 지점부터는 다시 엄격하게 증가하는(strictly increasing) 수열이 만들어지도록 하는 전환점 요소를 찾아야 합니다.이 문제를 풀 때 반드시 기억해야 할 조건은 다음과 같습니다.감소 수열과 증가 수열은 각각 최소 길이 2 이상이어야 합니다.감소 수열의 마지막 값은 곧 증가 수열의 첫 번째 값이 되며, 두 수열

  16. Python에서 곱이 같은 두 하위 배열로 배열을 나누는 요소 찾기

    크기가 N인 배열이 있다고 가정해 봅시다. 우리는 이 배열을 곱(product)이 같은 두 개의 하위 배열로 나눌 수 있는 요소를 찾아야 합니다. 그러한 분할이 불가능하다면 -1을 반환합니다.예를 들어 입력 배열이 [2, 5, 3, 2, 5]라면 결과는 3입니다. 요소 3을 기준으로 배열은 {2, 5}와 {2, 5}라는 두 하위 배열로 나뉘며, 두 배열의 곱은 모두 10으로 동일하기 때문입니다.문제 해결 접근 방식이 문제는 접두사 곱(prefix product)과 접미사 곱(suffix product)을 활용하면 효율적으로 해결할

  17. Python으로 병합 정렬 재귀 호출이 정확히 b번 필요한 배열 찾기

    두 개의 숫자 a와 b가 주어졌을 때, [1, a] 범위의 값을 모두 포함하면서 재귀 병합 정렬 함수가 정확히 b번 호출되도록 만드는 배열을 찾는 문제입니다.예를 들어 입력이 a = 10, b = 15라면, 가능한 출력 중 하나는 [3, 1, 4, 6, 2, 8, 5, 9, 10, 7]입니다.핵심 아이디어이미 정렬된 배열에 병합 정렬을 수행하면 최초 호출 단 한 번만 실행됩니다. 반면 인접한 두 원소의 순서를 뒤바꿀 때마다 분할 과정에서 추가적인 재귀 호출이 2번씩 발생합니다. 따라서 병합 정렬의 총 호출 횟수는 항상 홀수가 되며,

  18. Python으로 비토닉(Bitonic) 시퀀스에서 비토닉 포인트 찾기

    비토닉 시퀀스(Bitonic Sequence)란 처음에는 엄격하게 증가하다가, 어느 한 지점을 기준으로 다시 엄격하게 감소하는 수열을 의미합니다. 이때 증가에서 감소로 전환되는 지점을 비토닉 포인트(Bitonic Point)라고 부르며, 사실상 수열의 최댓값에 해당합니다.다만, 끝까지 계속 증가만 하거나 감소만 하는 단조 수열에는 비토닉 포인트가 존재하지 않습니다.문제 예시예를 들어 입력이 [7, 8, 9, 12, 10, 6, 3, 2]라면 출력은 12입니다. 12까지는 값이 계속 커지고, 그 이후부터는 작아지기 때문입니다.해결 접

  19. Python으로 배열 속 두 수의 곱에서 만들 수 있는 최대 약수 개수 구하기

    정수형 요소로 이루어진 배열이 주어졌을 때, 배열 안의 서로 다른 두 수를 곱해서 만들 수 있는 값들 중 약수의 개수가 가장 많은 값을 찾는 것이 이 글의 목표입니다. 먼저 배열에 있는 수들을 서로 곱해(교차 곱 계산) 가능한 모든 곱을 구하고, 그다음 각 곱의 약수를 계산한 뒤, 그중 약수 개수가 가장 큰 값을 찾으면 됩니다.예제 1arr = [3, 2, 10]출력:두 수의 곱으로 만들 수 있는 최대 약수 개수: 8풀이 과정:먼저 서로 다른 두 수의 곱(교차 곱)을 계산합니다. 3 × 2 = 6, 3 × 10 = 30, 2 × 1

  20. Python SymPy 모듈 입문: 기호 수학의 시작

    SymPy는 파이썬으로 작성된 기호 수학(Symbolic Mathematics) 전용 라이브러리입니다. SymPy는 본격적인 컴퓨터 대수 시스템(CAS, Computer Algebra System)을 지향하면서도, 코드를 최대한 단순하게 유지하여 이해하기 쉽고 확장하기도 편리하도록 설계되었습니다.SymPy는 순수 파이썬으로만 작성되어 있으며, 유일한 의존성은 임의 정밀도 부동소수점 연산을 제공하는 순수 파이썬 라이브러리인 mpmath입니다. 덕분에 설치와 사용이 매우 간편합니다.SymPy 모듈 설치하기pip 명령어 한 줄로 간단히

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