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

Python

  1. Python으로 시작~끝 범위 내 연속적으로 증가하는 모든 숫자 찾는 방법

    이번 글에서는 두 개의 숫자 start와 end가 주어졌을 때, [start, end] 범위(양 끝값 포함)에 속하면서 자릿수가 연속적으로 증가하는 모든 숫자를 정렬된 리스트 형태로 찾는 방법을 알아보겠습니다.연속적으로 증가하는 숫자란?연속적으로 증가하는 숫자란 각 자릿수가 왼쪽에서 오른쪽으로 갈수록 정확히 1씩 커지는 수를 의미합니다. 예를 들어 5678은 5 → 6 → 7 → 8로 연속적으로 증가하므로 해당되지만, 169는 1과 6 사이가 연속적이지 않으므로 해당되지 않습니다.문제 예시입력이 다음과 같다고 가정해 보겠습니다.st

  2. Python Pandas – 특정 시계열 빈도의 DateTimeIndex에서 시간(hour) 추출하기

    시계열 데이터를 다룰 때 DateTimeIndex에 저장된 날짜·시간 값에서 시(hour) 정보만 따로 추출해야 하는 경우가 자주 있습니다. 이럴 때 Pandas의 DateTimeIndex.hour 속성을 사용하면 간단하게 해결할 수 있습니다.먼저 필요한 라이브러리를 임포트합니다.import pandas as pdDatetimeIndex 생성하기기간(periods)은 6개, 빈도(freq)는 H(시간 단위)로 설정하여 DatetimeIndex를 생성합니다. 타임존(timezone)은 호주 시드니(Australia/Sydney)로 지

  3. 파이썬으로 다른 구간 안에 완전히 포함된 구간의 개수를 세는 프로그램

    문제 설명 구간(interval)들의 목록이 주어졌다고 가정해 보겠습니다. 목록의 각 항목 intervals[i]는 [시작(start), 끝(end)] 형태의 값을 가집니다. 우리가 구해야 할 값은 다른 구간 안에 완전히 포함되는 구간의 개수입니다. 단, 하나의 구간이 여러 구간에 동시에 포함되더라도 한 번만 계산합니다. 구간 [s0, e0]가 다른 구간 [s1, e1] 안에 완전히 포함되려면 s1 ≤ s0이고 e0 ≤ e1을 만족해야 합니다. 예를 들어 입력이 intervals = [[2, 6], [3, 4], [4, 7], [5

  4. 파이썬으로 이진 행렬 속 모든 1로 이루어진 정사각형 부분 행렬 개수 계산하기

    문제 소개2차원 이진 행렬(binary matrix)이 주어졌을 때, 모든 원소가 1로 이루어진 정사각형 부분 행렬이 몇 개나 존재하는지 구해야 합니다.예를 들어, 다음과 같은 행렬이 입력으로 주어진다고 가정해 보겠습니다.011011이 경우 출력은 5가 됩니다. 크기가 (2 × 2)인 정사각형이 하나 있고, (1 × 1)짜리 작은 정사각형이 네 개 있기 때문입니다.해결 접근법: 동적 프로그래밍(DP)이 문제는 동적 프로그래밍 기법으로 효율적으로 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.행렬의 각 위치 (i, j)에서,

  5. Python으로 이진 문자열에서 1로만 이루어진 부분 문자열 개수 세기

    이진 문자열 s가 주어졌을 때, 1로만 이루어진 부분 문자열의 개수를 구하는 문제를 살펴보겠습니다. 만약 답이 너무 크다면 결과를 10^9+7로 나눈 나머지를 반환하면 됩니다.문제 이해하기예를 들어 입력이 s = 100111이라면 출력은 7이 됩니다. 1로만 이루어진 부분 문자열은 [1, 1, 1, 1, 11, 11, 111]로 총 7개이기 때문입니다.해결 접근 방법이 문제는 각 위치에서 끝나는 1 부분 문자열의 개수를 누적하는 방식으로 효율적으로 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.변수 a와 count를 0으로

  6. 주어진 연산으로 리스트를 줄여가며 파이썬에서 가장 작은 나머지 숫자 찾기

    문제 설명양수로만 이루어진 리스트 nums가 있다고 가정해 보겠습니다. 이제 다음과 같은 연산을 수행할 수 있습니다. 리스트에서 두 값 a와 b(a ≤ b)를 제거한 뒤, 만약 a < b라면 그 차이인 b-a를 다시 리스트에 삽입하는 것입니다. 이 연산은 원하는 만큼 몇 번이든 반복할 수 있으며, 우리의 목표는 마지막에 남길 수 있는 가장 작은 숫자를 구하는 것입니다. 만약 리스트가 완전히 비게 된다면 0을 반환하면 됩니다.예를 들어 입력이 nums = [2, 4, 5]라고 한다면 출력은 1이 됩니다. 먼저 4와 5를 선택해

  7. 파이썬으로 k개의 동일한 길이 리본을 만들 수 있는 최대 길이 구하기

    양의 정수로 이루어진 리스트가 있으며, 각 숫자는 리본의 길이를 나타냅니다. 또한 필요한 리본의 개수를 뜻하는 값 k가 주어집니다. 리본은 원하는 만큼 몇 번이고 잘라낼 수 있으며, 이때 길이 r인 리본을 최소 k개 확보할 수 있는 가장 큰 r을 구하는 것이 목표입니다. 만약 그러한 값이 존재하지 않는다면 -1을 반환해야 합니다.문제 예시입력이 ribbons = [1, 2, 5, 7, 15], k = 5라고 가정해 보겠습니다. 이 경우 출력은 5입니다.그 이유는 다음과 같습니다.길이 15짜리 리본을 길이 5짜리 조각 3개로 자릅니다

  8. Python – 막대를 잘라 동일한 길이의 막대만 판매할 때 최대 이익 구하기

    문제 설명막대 길이 목록 rodLen과 두 개의 정수 profit(단위 길이당 이익), cost(절단 1회당 비용)가 주어졌다고 가정해 보겠습니다. 막대의 단위 길이마다 이익을 얻을 수 있지만, 판매할 수 있는 막대는 모두 길이가 서로 같아야 합니다. 또한 막대를 정수 길이를 가진 두 조각으로 자를 수 있으며, 절단할 때마다 cost만큼의 비용을 지불해야 합니다. 막대는 원하는 만큼 몇 번이든 잘라도 됩니다. 이때 얻을 수 있는 최대 이익을 구하는 것이 목표입니다.예를 들어 입력이 rodLen = [7, 10], profit = 6

  9. Python으로 두 문자열을 동일하게 만들기 위한 최소 삭제 횟수 구하는 프로그램

    두 개의 소문자 문자열 s와 t가 있다고 가정해 보겠습니다. 이때 우리는 두 문자열 중 어느 한쪽에서든 임의의 문자를 삭제할 수 있는 연산을 수행할 수 있습니다. 목표는 s와 t를 완전히 동일하게 만들기 위해 필요한 최소 연산(삭제) 횟수를 찾는 것입니다.예를 들어, 입력이 s = pipe, t = ripe라고 한다면 출력은 2가 됩니다. s에서 p를, t에서 r을 각각 삭제하면 두 문자열이 모두 ipe로 같아지기 때문입니다.풀이 접근 방식이 문제는 최장 공통 부분 수열(LCS)과 밀접한 관련이 있습니다. 두 문자열에서 공통으로 유

  10. 파이썬으로 남은 요소의 합이 k로 나누어떨어지도록 제거할 최소 길이의 부분 리스트 찾기

    양의 정수로 이루어진 리스트 nums와 양의 정수 k가 주어졌다고 가정해 보겠습니다. 우리는 리스트에서 일부 요소를 삭제한 뒤, 남은 요소들의 합이 k로 나누어떨어지도록 만들어야 합니다. 이때 삭제할 수 있는 가장 짧은 연속 부분 리스트(빈 리스트도 허용)의 길이를 구하는 것이 목표입니다.단, 전체 리스트를 통째로 삭제하는 것은 허용되지 않습니다. 또한 조건을 만족하는 부분 리스트가 존재하지 않는다면 -1을 반환해야 합니다.예시입력이 nums = [5, 8, 6, 3], k = 8이라고 해봅시다. 현재 요소들의 합은 5 + 8 +

  11. 파이썬으로 문자열 s의 고유한 부분 문자열 개수 세기

    문제 소개 문자열 s가 주어졌을 때, s에서 만들 수 있는 중복되지 않는 비어 있지 않은 부분 문자열(distinct non-empty substrings)의 개수를 구하는 것이 목표입니다. 예를 들어 입력이 s = abaa라면, 가능한 부분 문자열은 [a, b, ab, ba, aa, aba, baa, abaa]로 총 8가지이므로 결과값은 8이 됩니다. 접근 방법: 트라이(Trie) 활용 이 문제는 트라이(Trie) 자료구조를 이용하면 효율적으로 해결할 수 있습니다. 문자열의 모든 시작 위치에서 끝까지 탐색하며 각 부분 문자열을

  12. Python으로 문자열을 t+t 형태(같은 문자열 두 개의 연결)로 만드는 최소 편집 횟수 계산하기

    문제 설명 소문자로만 구성된 문자열 s가 주어져 있다고 가정해 보겠습니다. 우리는 문자열 안에서 임의의 문자를 삭제, 삽입, 또는 다른 문자로 교체하는 세 가지 연산을 자유롭게 사용할 수 있습니다. 목표는 어떤 문자열 t에 대해서든 s = t + t, 즉 동일한 문자열 두 개를 이어 붙인 형태가 되도록 만드는 데 필요한 최소 연산 횟수를 구하는 것입니다. 예를 들어 입력이 s = pqrxqsr이라면 정답은 2입니다. x를 p로 바꾸고 s를 삭제하면 문자열이 pqrpqr이 되는데, 이는 t = pqr일 때의 t + t와 정확히 일치하

  13. Python Pandas – DateTimeIndex에서 분(Minute) 값 추출하는 방법

    Python의 Pandas 라이브러리에서 특정 시계열 빈도로 생성된 DateTimeIndex에서 분(minute) 값을 추출하려면 DateTimeIndex.minute 속성을 사용하면 됩니다. 이 속성은 인덱스에 포함된 각 타임스탬프의 분 정보를 정수형 배열(Int64Index) 형태로 반환합니다.1. 필요한 라이브러리 임포트가장 먼저 pandas 라이브러리를 불러옵니다.import pandas as pd2. DatetimeIndex 생성시작 시점을 2021-10-20 02:30:55로 지정하고, 총 6개의 구간(periods=6)

  14. Python Pandas – DateTimeIndex에서 특정 시계열 빈도 기준으로 초(second) 추출하기

    Pandas의 DateTimeIndex에서 초(second) 값을 추출하려면 DateTimeIndex.second 속성을 사용하면 됩니다. 이 속성은 시계열 인덱스에 포함된 각 날짜·시간 값의 초 부분만 별도로 가져와 정수 형태의 Index로 반환합니다. 1. 필요한 라이브러리 불러오기 먼저 Pandas 라이브러리를 임포트합니다. import pandas as pd 2. DateTimeIndex 생성하기 pd.date_range() 함수를 사용해 시작 시점부터 총 6개의 타임스탬프를 생성합니다. 빈도(freq)는 S, 즉 1초 단위

  15. Python Pandas – 특정 시계열 빈도로 DateTimeIndex에서 마이크로초 추출하기

    특정 시계열 빈도가 설정된 DateTimeIndex에서 마이크로초(microsecond)를 추출하려면 DateTimeIndex.microsecond 속성을 사용합니다. 이 속성은 인덱스 내 각 타임스탬프의 마이크로초 값을 정수 배열 형태로 반환합니다. 라이브러리 임포트 먼저 필요한 pandas 라이브러리를 임포트합니다. import pandas as pd DatetimeIndex 생성하기 기간(periods)은 6으로, 빈도(freq)는 us, 즉 마이크로초로 지정하여 DatetimeIndex를 생성합니다. 시간대는 호주 시드니

  16. Python Pandas – datetime.date 객체로 구성된 numpy 배열 반환하는 방법

    Python datetime.date 객체로 구성된 numpy 배열을 반환하려면 Pandas의 DatetimeIndex.date 속성을 사용하면 됩니다. 이 속성은 타임스탬프(Timestamp)에서 시간대(timezone) 정보를 제외한 날짜 부분만 추출하여 numpy 배열 형태로 반환해 줍니다.라이브러리 임포트먼저 필요한 라이브러리를 불러옵니다.import pandas as pdDatetimeIndex 생성기간(periods)을 3으로 설정하고, 빈도(freq)는 나노초(ns) 단위로 지정하며, 시간대는 호주 시드니(Austral

  17. 파이썬으로 블랙리스트 칸을 피해 공이 높이 0까지 내려가는 경로의 수를 계산하는 프로그램

    값 h와 숫자 목록 blacklist가 주어진 상황을 가정해 보겠습니다. 우리는 현재 높이 h에 서 있고, 작은 공 하나를 높이 0까지 굴려 내리는 게임을 진행하고 있습니다. 게임의 규칙은 다음과 같습니다.짝수 번째 라운드(0부터 시작)에는 공을 1칸, 2칸, 또는 4칸 아래로 이동할 수 있습니다.홀수 번째 라운드에는 공을 1칸, 3칸, 또는 4칸 아래로 이동할 수 있습니다.일부 층(높이)은 블랙리스트에 등록되어 있으며, 공이 이 칸에 도달하면 즉시 사라집니다.목표는 블랙리스트 칸을 피하면서 공이 높이 0에 도달하는 서로 다른 경로

  18. Python Pandas – DateTimeIndex에서 나노초 추출하는 방법 (나노초 빈도 설정)

    Pandas에서 DateTimeIndex.nanosecond 속성을 사용하면 특정 시계열 빈도로 구성된 DateTimeIndex에서 나노초(nanosecond) 값을 손쉽게 추출할 수 있습니다. 이 글에서는 나노초 단위 빈도(freq=ns)를 가진 DatetimeIndex를 만들고, 각 시점의 나노초 값을 가져오는 과정을 예제와 함께 살펴보겠습니다.1. 라이브러리 임포트가장 먼저 필요한 라이브러리를 임포트합니다.import pandas as pd2. 나노초 빈도의 DatetimeIndex 생성기준 시각 2021-10-20 02:30

  19. Python Pandas – DatetimeIndex에서 datetime.time 객체의 NumPy 배열 반환하기

    Python의 datetime.time 객체로 구성된 NumPy 배열을 반환하려면 Pandas의 DatetimeIndex.time 속성을 사용하면 됩니다. 이 속성은 타임스탬프(Timestamp)에서 날짜 정보를 제외하고 시간 부분만 추출하여 배열 형태로 제공합니다. 1단계: 라이브러리 임포트 먼저 필요한 라이브러리를 임포트합니다. import pandas as pd 2단계: DatetimeIndex 생성 기간(periods)은 3으로, 빈도(freq)는 나노초(ns)로 설정하여 DatetimeIndex를 생성합니다. 타임존(tim

  20. Python Pandas – 시간대 정보가 포함된 datetime.time 객체의 NumPy 배열 반환하기

    Pandas에서 시간대(timezone) 정보가 포함된 datetime.time 객체로 구성된 NumPy 배열을 반환하려면 DatetimeIndex의 timetz 속성을 사용하면 됩니다. 이 속성은 Timestamp에서 날짜를 제외한 시간 부분만 추출하면서, 해당 값에 적용된 시간대 정보까지 함께 유지해 줍니다. 필수 라이브러리 임포트 먼저 필요한 라이브러리를 임포트합니다. import pandas as pd DatetimeIndex 생성 pd.date_range()를 사용하여 시작 시점부터 총 5개의 요소를 가지는 Datetime

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:391/450  20-컴퓨터/Page Goto:1 385 386 387 388 389 390 391 392 393 394 395 396 397