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

Python

  1. matplotlib에서 막대 그래프 테두리(edge)를 제어하는 방법

    matplotlib에서 막대(bar) 패치의 테두리를 제어하려면 edgecolor와 linewidth 옵션을 활용하면 됩니다. 아래에서 단계별로 살펴보겠습니다.구현 단계그림(figure) 크기를 설정하고, 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.막대의 높이(height) 리스트와 X축에 표시할 라벨(labels) 튜플을 생성합니다.bar() 메서드의 인자에 edgecolor를 지정하여 막대 패치의 테두리 색상을 제어합니다. 여기서는 edgecolor=green을 사용했습니다.X축의 눈금(ticks)과 라벨을 설정

  2. Matplotlib – 카운트 플롯(countplot) 막대 상단에 개수 값을 표시하는 방법

    Seaborn의 countplot에서 각 막대 상단에 개수(count) 값을 표시하려면 annotate() 함수를 활용하면 됩니다. 아래에서 단계별로 자세히 알아보겠습니다.구현 단계그림(figure) 크기를 설정하고, 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.한 개의 열(column)을 가진 Pandas 데이터프레임을 생성합니다.카운트 플롯(countplot)은 양적 변수가 아닌 범주형 변수를 대상으로 한 히스토그램이라고 생각할 수 있습니다.카운트 플롯이 반환한 axes 객체를 순회(iterate)하면서 각 막대

  3. Python Matplotlib로 3D 플롯을 PDF 파일로 저장하는 방법

    Python에서 3D 플롯(3차원 그래프)을 PDF 파일로 저장하려면 Matplotlib의 savefig() 메서드를 활용하면 됩니다. PDF는 벡터 기반 형식이기 때문에 확대하거나 인쇄해도 화질 저하 없이 선명한 품질을 유지할 수 있다는 장점이 있습니다. 아래 단계를 따라 하면 손쉽게 구현할 수 있습니다.구현 단계figure.figsize와 figure.autolayout 설정으로 그림 크기를 지정하고, 서브플롯 사이 및 주변의 여백(padding)을 자동으로 조정합니다.plt.figure()로 새 figure를 생성하거나 기존

  4. Matplotlib에서 곡선의 논리적 음영 영역 만드는 방법

    Matplotlib에서 곡선의 특정 구간을 조건에 따라 논리적으로 음영 처리하려면 BrokenBarHCollection 클래스의 span_where() 메서드를 활용할 수 있습니다. 이 방법을 사용하면 곡선 값이 양수인 구간과 음수인 구간을 각각 다른 색상으로 손쉽게 강조할 수 있습니다.구현 단계그림(figure) 크기를 설정하고, 서브플롯 주변 및 사이의 여백(padding)을 자동으로 조정합니다.NumPy를 사용하여 t, s1, s2 데이터 포인트를 생성합니다.figure와 subplot 세트를 생성합니다.t와 s1 데이터를 플

  5. Seaborn 히트맵에서 축 눈금 표시 제거하는 방법

    Seaborn으로 히트맵(heatmap)을 그릴 때, 데이터의 패턴에 집중할 수 있도록 축의 눈금 표시(tick mark)를 제거하고 싶은 경우가 있습니다. 이 글에서는 Matplotlib의 tick_params() 메서드를 활용해 히트맵에서 축 눈금을 간단히 제거하는 방법을 소개합니다.구현 단계그림(figure) 크기를 설정하고, 서브플롯 주변 및 사이의 여백을 자동으로 조정합니다.NumPy를 이용해 4×4 크기의 난수 데이터를 생성합니다.sns.heatmap()을 호출하여 데이터를 색상으로 인코딩된 행렬 형태로 시각화합니다.ti

  6. Matplotlib에서 plt.show()가 필요한 경우와 그렇지 않은 경우는 언제일까?

    Matplotlib에서 그래프를 화면에 표시할 때 plt.show()와 fig.show() 중 어떤 것을 사용해야 할지 혼란스러울 수 있습니다. 두 메서드의 차이점을 명확히 이해하면 코드 작성이 훨씬 수월해집니다. plt.show()와 fig.show()의 핵심 차이 plt.show()는 인터랙티브(대화형) 모드가 아닐 때, 즉 일반 스크립트 실행 환경에서 플롯을 화면에 표시하는 데 필요합니다. 반면 fig.show()는 인터랙티브 모드에서 여러 개의 figure 객체를 한 번에 화면에 띄우고 싶을 때 유용합니다. 간단한 예제를 통

  7. 파이썬으로 삽입 정렬 시 필요한 총 시프트(이동) 횟수 구하기 – 펜윅 트리 활용

    문제 개요 배열 하나가 주어지고, 여기에 삽입 정렬(Insertion Sort)을 적용해야 한다고 가정해 보겠습니다. 삽입 정렬은 각 원소를 이미 정렬된 앞부분과 비교하여 자신의 올바른 위치로 한 칸씩 시프트(이동)시키는 방식으로 동작합니다. 이때 우리가 구해야 하는 것은 배열 전체가 정렬될 때까지 발생하는 총 시프트 횟수입니다. 결과값은 정수이며, 배열이 이미 정렬되어 있는 경우에는 0을 반환합니다. 예를 들어 입력이 다음과 같다면, [4, 5, 3, 1, 2] 각 원소가 제자리에 삽입되는 과정은 아래와 같습니다. [4, 5, 3

  8. 파이썬으로 두 문자열을 병합해 사전순 최소 문자열 만들기

    문제 개요두 개의 문자열이 주어져 있고, 이 문자열들을 조합해 사전순(lexicographically)으로 가장 작은 문자열을 만들려고 합니다. 문자열을 구성하는 규칙은 다음과 같습니다. 매 단계마다 두 문자열의 현재 첫 글자를 비교하여, 사전순으로 더 작은 글자를 해당 문자열에서 추출해 결과 문자열에 붙입니다. 두 글자가 같아 동률인 경우에는 첫 번째 문자열에서 글자를 가져옵니다. 이 과정을 두 문자열이 모두 빌 때까지 반복하며, 최종적으로 완성된 최소 문자열을 반환해야 합니다.예를 들어 입력이 input_1 = TUTORIALS

  9. Python으로 각 쿼리별 유사한 부분 문자열 개수 계산하기

    문자열 s와 쿼리 목록 Q가 주어졌다고 가정해 보겠습니다. 각 쿼리 Q[i]는 쌍 (l, r)을 담고 있으며, 우리는 s의 l번째부터 r번째까지 잘라낸 부분 문자열과 유사한 부분 문자열(s의 x번째부터 y번째까지)이 전체에서 몇 개나 되는지 찾아야 합니다.두 문자열 s와 t가 유사하다고 판단되는 조건은 다음과 같습니다.두 문자열의 길이가 서로 같아야 합니다.모든 인덱스 쌍 (i, j)에 대해, s[i]와 s[j]가 같다면 t[i]와 t[j]도 반드시 같아야 하고, 반대로 s[i]와 s[j]가 다르다면 t[i]와 t[j]도 서로 달라

  10. Python으로 쿼리 범위 내 서로 다른 부분 문자열 개수 구하기 (접미사 배열 + 카사이 알고리즘)

    문제 소개 길이가 n인 문자열 s와 쿼리 리스트 Q가 주어졌다고 가정해 보겠습니다. 각 쿼리 Q[i]는 한 쌍의 값 (l, r)을 담고 있으며, 각 쿼리마다 문자열 s에서 인덱스 l부터 r까지(양 끝 포함) 범위에 속하는 서로 다른 부분 문자열(distinct substring)의 개수를 세어야 합니다. 예를 들어 입력이 s = ppqpp, Q = [(1,1), (1,4), (1,1), (0,2)]라면 결과는 [1, 8, 1, 5]가 됩니다. 그 이유는 다음과 같습니다. 쿼리 (1, 1): 해당 범위의 문자열은 p 하나뿐이므로 서

  11. Python으로 목표 리뷰 비율 달성에 필요한 5점 리뷰 최소 개수 계산하기

    리뷰 목록 reviews와 임계값 t가 주어졌다고 가정해 보겠습니다. 각 항목 reviews[i]가 [x, y] 형태일 때, 이는 i번째 제품이 별 5개짜리 평점을 x개, 그리고 전체 리뷰 y개를 받았다는 의미입니다. 우리가 구해야 할 것은 전체 리뷰 중 별 5개 리뷰의 비율이 최소 t% 이상이 되도록 만들기 위해 추가로 필요한 별 5개 리뷰의 최소 개수입니다.예를 들어 입력이 reviews = [[3, 4], [1, 2], [4, 6]], threshold = 78이라면 출력은 7이 됩니다. 현재까지의 별 5개 리뷰는 총 8개이고

  12. 파이썬에서 자릿수 리스트로 표현된 숫자에 1 더하기 (받아올림 처리)

    문제 소개어떤 수의 각 자릿수가 nums라는 리스트에 저장되어 있다고 가정해 보겠습니다. 예를 들어 [2, 5, 6]은 256을 나타냅니다. 이제 이 수에 1을 더한 결과를 동일한 형식, 즉 자릿수 리스트 형태로 반환해야 합니다.예를 들어 입력이 nums = [2, 6, 9]라면, 269 + 1 = 270이므로 출력은 [2, 7, 0]이 됩니다.알고리즘 접근 방법핵심 아이디어는 우리가 손으로 덧셈을 할 때와 마찬가지로, 가장 뒤쪽 자릿수부터 차례대로 처리하면서 받아올림(carry)을 앞쪽으로 전파하는 것입니다. 단계별로 살펴보면 다

  13. Python으로 목표 합계 달성에 필요한 최소 요소 추가 횟수 구하기

    문제 개요숫자 리스트 nums와 두 변수 k, t가 주어져 있다고 가정해 보겠습니다. 이 문제에서 수행할 수 있는 연산은 범위 [-k, k] 안에서 임의의 값 e를 하나 선택해 리스트 nums의 끝에 삽입하는 것입니다. 이러한 연산을 반복했을 때 nums의 총합이 목표값 t와 정확히 일치하도록 만드는 데 필요한 최소 연산 횟수를 구하는 것이 목표입니다.예를 들어 입력이 nums = [3, 1], k = 4, t = 19라면 답은 4가 됩니다. [3, 1, 4, 4, 4, 3]처럼 값을 네 번 추가하면 합이 정확히 19가 되기 때문입

  14. Python으로 배열을 연속된 요소 간 차이가 같도록 재배열할 수 있는지 확인하는 프로그램

    리스트 nums가 주어졌을 때, 이 리스트의 순서를 재배열하여 연속된 두 숫자의 차이가 항상 동일하도록 만들 수 있는지 확인하는 문제입니다. 즉, 배열이 등차수열 형태가 될 수 있는지를 판별하는 것입니다.문제 예시예를 들어 입력이 nums = [8, 2, 6, 4]라면 결과는 True입니다. 왜냐하면 이 배열을 [2, 4, 6, 8]과 같이 재배열하면, 연속된 두 숫자의 차이가 모두 2로 동일하기 때문입니다.해결 접근 방법이 문제는 다음 단계를 통해 해결할 수 있습니다.먼저 N을 nums의 크기(길이)로 설정합니다.N이 2 이하라면

  15. Python에서 m으로 나눈 부분 배열 합의 최댓값 구하는 프로그램

    문제 개요n개의 원소를 가진 배열 nums와 정수 m이 주어졌을 때, 임의의 부분 배열(연속된 구간) 합을 m으로 나눈 나머지(modulo) 값 중 최댓값을 구하는 프로그램을 만들어 보겠습니다.예를 들어 nums = [1, 5, 7, 3], m = 5가 입력으로 주어지면 정답은 3입니다. 모든 부분 배열의 합을 5로 나눈 결과는 다음과 같습니다.[1] mod 5 = 1[5] mod 5 = 0[7] mod 5 = 2[3] mod 5 = 3[1, 5] mod 5 = 1[5, 7] mod 5 = 2[7, 3] mod 5 = 0[1, 5,

  16. 파이썬으로 영숫자 문자열 안의 숫자 합 구하기

    문제 개요0부터 9까지의 숫자와 소문자 영어 알파벳으로 이루어진 영숫자(alphanumeric) 문자열 s가 있다고 가정해 봅시다. 우리가 해야 할 일은 문자열 s에 포함된 숫자들의 합을 구하는 것입니다. 이때 연속된 숫자들은 하나의 숫자로 간주한다는 점이 핵심입니다.예를 들어 입력이 s = hello25world63power86이라면, 출력은 174가 됩니다. 25 + 63 + 86 = 174이기 때문입니다.해결 방법이 문제는 다음 단계를 따라 해결할 수 있습니다.결과를 저장할 변수 ret과 현재 숫자를 저장할 변수 curr을 각

  17. 파이썬으로 두 개의 구가 3차원 공간에서 가속하며 이동할 때 서로 만날 수 있는지 확인하는 프로그램

    문제 설명반지름이 각각 r1과 r2인 두 개의 구가 있다고 가정해 봅시다. 첫 번째 구의 위치는 (x1, y1, z1), 두 번째 구의 위치는 (x2, y2, z2)이며, 각 구의 가속도는 (ax1, ay1, az1)과 (ax2, ay2, az2)로 주어집니다. 우리가 해야 할 일은 이 두 구가 주어진 가속도로 움직일 때 3차원 공간에서 언젠가 서로 만나는 순간이 있는지, 즉 충돌하는지를 판별하는 것입니다.예를 들어 입력이 r1 = 1, r2 = 2, pos1 = (0, 0, 0), acc1 = (100, 0, 0), pos2 =

  18. sqrt 함수 없이 파이썬으로 숫자가 완전제곱수인지 확인하는 프로그램

    완전제곱수란 무엇일까요?어떤 수 n이 주어졌을 때, 이 수가 완전제곱수(perfect square)인지 아닌지 판별하는 것이 이 글의 목표입니다. 완전제곱수란 어떤 정수 a에 대해 k = a × a 형태로 표현할 수 있는 수를 말합니다. 특히 이번 문제에서는 math.sqrt()와 같은 내장 제곱근 함수를 사용하지 않고 직접 해결해야 한다는 조건이 있습니다.예를 들어 입력이 n = 121이라면 121 = 11 × 11이므로 결과는 True가 됩니다. 반면 n = 122처럼 어떤 정수의 제곱으로도 표현할 수 없는 수라면 False를

  19. 파이썬으로 숫자가 2의 거듭제곱인지 확인하는 방법

    문제 개요 하나의 숫자 n이 주어졌을 때, 이 숫자가 2의 거듭제곱인지 아닌지 판별해야 합니다. 예를 들어 입력값이 n = 2048이라면, 2048은 2^11에 해당하므로 출력 결과는 True가 됩니다. 해결 방법 이 문제는 비트 연산을 활용하면 매우 효율적으로 해결할 수 있습니다. 접근 방법은 다음과 같습니다. n이 0과 같다면 False를 반환합니다. (n AND (n - 1))의 결과가 0이면 True를, 그렇지 않으면 False를 반환합니다. 이 방법이 작동하는 원리는 간단합니다. 2의 거듭제곱 수는 이진수로 표현했을

  20. 파이썬으로 문자열에서 각 인덱스별 특정 문자까지의 최단 거리 구하기

    문제 개요문자열 s와 문자 c가 주어졌다고 가정해 봅시다. 이때 c는 반드시 s 안에 존재해야 합니다. 우리가 구해야 할 것은 s와 길이가 같은 리스트로, 각 인덱스 i의 값은 s[i]에서 문자 c까지의 가장 가까운 거리입니다.예를 들어 입력이 s = ppqppq, c = q라면 출력은 다음과 같습니다.[2, 1, 0, 1, 1, 0]각 위치에서 왼쪽 또는 오른쪽에 있는 가장 가까운 q까지의 거리를 계산한 결과입니다.풀이 접근 방법이 문제는 다음 단계를 따라 해결할 수 있습니다.j := 문자열 s의 길이d := 길이가 j이고 모든

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:368/450  20-컴퓨터/Page Goto:1 362 363 364 365 366 367 368 369 370 371 372 373 374