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

Python

  1. 파이썬으로 한 상자 안에 중첩할 수 있는 최대 상자 개수 구하기

    문제 이해하기 상자들의 목록이 주어졌다고 가정해 보겠습니다. 각 행은 해당 상자의 너비(width)와 높이(height)를 나타냅니다. 어떤 상자의 너비와 높이가 모두 다른 상자보다 작을 경우, 그 상자를 다른 상자 안에 넣을 수 있습니다. 우리의 목표는 하나의 상자 안에 최대 몇 개의 상자까지 중첩해서 넣을 수 있는지 구하는 것입니다. 예시 너비높이1212101066510 위 입력의 경우 출력은 3입니다. [6, 6] 상자를 [10, 10] 상자 안에 넣을 수 있고, 그 상자를 다시 [12, 12] 상자 안에 넣을 수 있기 때문입

  2. 파이썬으로 문자열이 주어진 단어 목록의 조합으로 분해 가능한지 확인하는 방법

    문자열이 단어 목록으로 나누어지는지 확인하는 파이썬 프로그램단어 목록(words)과 공백이 포함되지 않은 하나의 문자열 s가 주어졌다고 가정해 보겠습니다. 이때 확인해야 할 것은 문자열 s가 주어진 단어 목록에 있는 단어들의 조합으로 완전히 분해될 수 있는지 여부입니다.예를 들어, words = [love, python, we, programming, language]이고 s = welovepythonprogramming이라면, 이 문자열은 we + love + python + programming으로 나눌 수 있으므로 출력 결과는

  3. 파이썬으로 주식을 최대 두 번 사고팔아 최대 수익 구하는 프로그램

    시간 순서대로 정렬된 주식 가격 리스트 prices가 주어졌을 때, 주식을 최대 두 번 사고팔아 얻을 수 있는 최대 수익을 구하는 문제를 살펴보겠습니다. 단, 반드시 먼저 매수한 후에 매도해야 하며, 두 번째 매수는 첫 번째 매도 이후에 이루어져야 합니다.문제 예시입력이 prices = [2, 6, 3, 4, 2, 9]라면 출력은 11이 됩니다. 가격 2에 매수한 후 6에 매도하고(+4), 다시 가격 2에 매수한 뒤 9에 매도하면(+7) 총 수익이 11이 되기 때문입니다.풀이 전략이 문제는 네 개의 상태 변수를 이용해 한 번의 순회

  4. 파이썬으로 최대 k칸 점프 시 마지막 인덱스까지의 최소 비용 구하기

    문제 개요숫자로 이루어진 리스트 nums와 정수 k가 주어집니다. 이때 nums[i]는 인덱스 i에 착지했을 때 발생하는 비용을 의미합니다. 우리는 인덱스 0에서 출발하여 리스트의 마지막 인덱스에 도달해야 하며, 각 단계에서 현재 위치 X로부터 최대 k칸 떨어진 어떤 위치로든 점프할 수 있습니다.목표는 마지막 인덱스에 도달하기 위해 지불해야 하는 비용의 합을 최소화하는 것입니다. 그렇다면 최소 비용은 얼마일까요?예시입력이 다음과 같다고 가정해 보겠습니다.nums = [2, 3, 4, 5, 6]k = 2이 경우 출력은 12가 됩니다.

  5. Python으로 최대 k번의 매수·매도에서 얻을 수 있는 최대 수익 구하기

    시간 순서대로 정렬된 주가 목록 nums와 정수 k가 주어졌을 때, 최대 k번의 매수와 매도를 통해 얻을 수 있는 최대 수익을 구하는 프로그램을 만들어 보겠습니다. 단, 반드시 매수 후에 매도해야 하며, 매도한 뒤에만 다시 매수할 수 있다는 조건이 있습니다.예를 들어 prices = [7, 3, 5, 2, 3]이고 k = 2라면 출력은 3이 됩니다. 가격이 3일 때 매수하여 5일 때 매도하고(+2), 다시 2일 때 매수하여 3일 때 매도하면(+1) 총 수익이 3이 되기 때문입니다.문제 해결 접근 방식이 문제는 재귀 호출과 동적 계획

  6. 파이썬에서 내장 함수 없이 수학 표현식을 직접 계산하는 프로그램

    문제 소개덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/) 연산자로 이루어진 수학 표현식 문자열이 주어졌을 때, 파이썬의 내장 함수를 사용하지 않고 이 표현식을 직접 평가하여 결과를 반환하는 프로그램을 작성해 보겠습니다. 여기서 나눗셈(/)은 정수 나눗셈을 의미합니다.예를 들어 입력이 s = "2+3*5/7"이라면 출력은 4가 됩니다. 연산자 우선순위에 따라 2 + ((3 * 5) / 7) = 2 + (15 / 7) = 2 + 2 = 4로 계산되기 때문입니다.해결 접근 방법이 문제의 핵심은 연산자 우선순위를 올바르

  7. 파이썬으로 최종 목적지까지 도달하는 데 드는 최소 버스 비용 구하기

    문제 개요n × 3 크기의 행렬이 주어집니다. 각 행은 [src, dest, id] 세 개의 필드로 구성되며, 이는 해당 버스가 src(출발지)에서 dest(도착지)까지 운행한다는 의미입니다. 새로운 버스에 탑승할 때마다 1단위의 비용이 들지만, 같은 버스에 계속 타고 있는 동안에는 추가 비용이 발생하지 않습니다. 위치 0에서 출발해 가장 먼 최종 정류장(주어진 위치 중 가장 큰 값)까지 이동하는 데 필요한 최소 비용을 구하고, 경로가 존재하지 않으면 -1을 반환해야 합니다.입력 예시출발지(src)도착지(dest)버스 ID01012

  8. 파이썬으로 행렬에서 빈 셀을 선택하는 방법의 수 구하기

    N×N 크기의 이진 행렬이 있다고 가정해 보겠습니다. 여기서 0은 빈 셀(empty cell), 1은 막힌 셀(blocked cell)을 의미합니다. 이때 모든 행과 모든 열에 최소 하나의 선택된 셀이 포함되도록 N개의 빈 셀을 선택하는 방법의 수를 구해야 합니다. 답이 매우 커질 수 있으므로, 결과는 10^9 + 7로 나눈 나머지를 반환합니다. 문제 예시 예를 들어 입력이 다음과 같다고 해보겠습니다. 000000010 이 경우 출력은 4입니다. x를 선택된 셀이라고 할 때, 조건을 만족하는 배치가 총 4가지 존재하기 때문입

  9. 파이썬으로 가장 긴 원형 증가 부분 수열(LIS)의 길이 구하기

    문제 개요 숫자로 이루어진 리스트 nums가 주어졌을 때, 가장 긴 증가 부분 수열(Longest Increasing Subsequence)의 길이를 구하는 문제입니다. 특별한 조건은 부분 수열이 리스트의 끝에 도달하면 다시 처음으로 돌아가 이어질 수 있다는 점, 즉 리스트를 원형(circular) 구조로 취급한다는 것입니다. 예를 들어 입력이 nums = [6, 5, 8, 2, 3, 4]라면 정답은 5입니다. 리스트의 끝에서 처음으로 감싸 연결했을 때 가장 긴 증가 부분 수열이 [2, 3, 4, 6, 8]이 되기 때문입니다.

  10. 파이썬으로 점이 다각형의 내부 또는 경계에 있는지 확인하는 프로그램

    문제 개요데카르트 좌표계의 점들로 구성된 리스트 [(x1, y1), (x2, y2), ..., (xn, yn)]가 하나의 다각형(polygon)을 나타낸다고 가정해 봅시다. 여기에 두 값 x와 y가 추가로 주어졌을 때, 점 (x, y)가 이 다각형의 내부 또는 경계선 위에 존재하는지 판별하는 것이 목표입니다.예를 들어 입력이 다음과 같다고 해보겠습니다.points = [(0, 0), (1, 3), (4, 4), (6, 2), (4, 0)]pt = (3, 1)점 (3, 1)은 다각형 내부에 위치하므로 출력은 True가 됩니다.풀이 접

  11. 파이썬으로 합이 k가 되는 부분 집합의 개수 구하기 (동적 계획법)

    숫자로 이루어진 리스트 nums와 정수 k가 주어졌을 때, 리스트의 요소들 중 합이 정확히 k가 되는 부분 집합(subset)의 개수를 구하는 문제입니다. 답이 매우 커질 수 있으므로 결과는 10^9 + 7로 나눈 나머지를 반환해야 합니다. 예를 들어 입력이 nums = [2, 3, 4, 5, 7], k = 7이라면 출력은 3이 됩니다. [2, 5], [3, 4], [7] 세 가지 부분 집합을 만들 수 있기 때문입니다. 문제 해결 접근 방식 이 문제는 동적 계획법(Dynamic Programming)을 활용하면 효율적으로 해결할 수

  12. 파이썬으로 모든 도시의 최대 인구 합을 찾는 프로그램

    문제 소개 어떤 나라가 N개의 노드와 N-1개의 간선으로 이루어진 트리(tree) 구조로 표현되어 있다고 가정해 보겠습니다. 각 노드는 하나의 마을을 나타내고, 각 간선은 마을 사이를 잇는 도로를 의미합니다. 크기가 N-1인 두 리스트 source와 dest가 주어지며, i번째 도로는 source[i]와 dest[i]를 연결하고 모든 도로는 양방향입니다. 또한 크기가 N인 population 리스트에는 population[i] 값으로 i번째 마을의 인구가 담겨 있습니다. 우리는 몇 개의 마을을 도시로 승격시키려고 합니다. 이때 다

  13. Python에서 최대 k개의 문자를 삭제한 후 회문을 형성할 수 있는지 확인하는 프로그램

    문자열 s가 주어졌을 때, 최대 k개의 문자를 삭제하여 이 문자열을 회문(palindrome)으로 만들 수 있는지 확인하는 문제입니다.예를 들어 s = lieuvrel, k = 4라고 가정해 보겠습니다. 이 경우 세 개의 문자를 삭제하면 회문인 level을 얻을 수 있으므로 결과는 True가 됩니다.해결 접근 방법이 문제는 최장 공통 부분 수열(LCS, Longest Common Subsequence) 알고리즘을 활용하면 효율적으로 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.문자열 s와 그 역순 문자열의 LCS 길이를 구

  14. 파이썬으로 2진 행렬을 k개 조각으로 나누는 방법의 수 세기

    이번 문제에서는 0과 1로 이루어진 2진 행렬(binary matrix)과 정수 k가 주어집니다. 우리는 이 행렬을 k개의 조각으로 나누되, 각 조각에 최소한 하나의 1이 포함되도록 해야 합니다.단, 잘라내는 과정에는 다음과 같은 규칙이 있습니다.먼저 자를 방향을 선택합니다 — 세로(vertical) 또는 가로(horizontal).행렬에서 잘라낼 인덱스를 지정하여 두 부분으로 나눕니다.세로로 자른 경우: 왼쪽 부분은 더 이상 자를 수 없고, 오른쪽 부분만 계속 잘라야 합니다.가로로 자른 경우: 위쪽 부분은 더 이상 자를 수 없고,

  15. 파이썬으로 2차원 행렬에서 순환(Cycle) 존재 여부 확인하기

    문제 개요2차원 행렬이 주어졌을 때, 임의의 칸에서 출발하여 같은 값을 가진 인접한 칸(위, 아래, 왼쪽, 오른쪽)으로만 이동한 뒤, 다시 시작 지점으로 돌아올 수 있는지 확인하는 문제입니다. 단, 바로 직전에 방문했던 칸으로는 되돌아갈 수 없다는 제약 조건이 있습니다.예를 들어 다음과 같은 행렬이 입력으로 주어진다고 가정해 보겠습니다.222121212221이 경우 출력은 True가 됩니다. 값이 2인 칸들을 따라 이동하면 시작 지점으로 되돌아오는 순환 경로를 만들 수 있기 때문입니다.해결 접근 방법이 문제는 그래프 탐색 기법인 D

  16. 파이썬으로 요청 속도 제한 조건에 따라 처리되는 요청 수 계산하기

    문제 설명웹사이트로 들어오는 요청 목록이 주어졌다고 가정해 보겠습니다. 각 요청은 [uid, time_sec] 형태로 표현되며, uid는 사용자 ID, time_sec는 요청이 발생한 타임스탬프(초 단위)를 의미합니다. 즉, 해당 사용자가 time_sec 시점에 웹사이트에 요청을 보냈다는 뜻입니다.여기에 두 개의 제한 값이 추가로 주어집니다.u: 특정 사용자(uid)가 60초 미만의 시간 창(window) 내에서 허용되는 최대 요청 수g: 전체 시스템 기준으로 60초 미만의 시간 창 내에서 허용되는 최대 요청 수각 요청을 순서대로

  17. 파이썬에서 NumPy 배열로 시리즈를 만들고 인덱스 값을 명시적으로 지정하는 방법

    이 글에서는 NumPy 배열을 활용해 pandas의 Series(시리즈) 데이터 구조를 만드는 방법과, 인덱스(index) 값을 직접 지정하는 방법을 살펴보겠습니다.시리즈를 생성할 때 인덱스 값을 별도로 지정하지 않으면 기본적으로 0부터 시작하는 정수가 순서대로 할당됩니다. 하지만 필요에 따라 사용자가 원하는 값을 인덱스로 직접 전달할 수 있습니다.예제 코드import pandas as pd import numpy as np my_data = np.array([ab,bc,cd,de, ef, fg,gh, hi]) my_index =

  18. 파이썬 Seaborn으로 산점도(Scatter Plot) 그리는 방법 – jointplot 활용 가이드

    데이터 시각화는 분석 과정에서 매우 중요한 단계입니다. 복잡한 계산을 수행하거나 숫자를 일일이 살펴보지 않아도, 시각화를 통해 데이터 안에서 어떤 일이 일어나고 있는지 직관적으로 파악할 수 있기 때문입니다. Seaborn은 이러한 데이터 시각화를 손쉽게 도와주는 대표적인 파이썬 라이브러리입니다.산점도란 무엇인가?산점도(Scatter Plot)는 데이터 포인트들을 그래프 위에 흩어진 점 형태로 표현하여 데이터의 분포를 보여주는 차트입니다. 각 점(dot)은 수치형(numeric) 데이터셋의 값을 나타내며, 가로축과 세로축 위에서 점의

  19. 파이썬 Pandas에서 스칼라(상수) 값으로 시리즈(Series) 데이터 구조를 생성하는 방법

    스칼라(scalar) 또는 상수 값은 한 번만 정의되며, 시리즈 데이터 구조의 모든 행(엔트리)에 걸쳐 반복됩니다. 즉, 하나의 값만 지정해도 인덱스 길이에 맞춰 해당 값이 전체에 자동으로 채워지는 방식입니다.다음은 사용자 정의 인덱스와 함께 스칼라 값을 사용해 시리즈를 생성하는 예제입니다.예제 1: 인덱스를 지정한 경우import pandas as pdmy_index = [ab, mn, gh, kl]my_series = pd.Series(7, index = my_index)print(스칼라 값과 인덱스를 지정하여 생성한 시리즈 데

  20. Python Pandas Series에서 인덱스 값으로 요소 접근하기 – 기본 인덱스와 사용자 정의 인덱스 활용법

    Pandas의 Series는 생성 시 인덱스를 따로 지정하지 않으면 0부터 시작하는 정수형 기본 인덱스가 자동으로 부여됩니다. 이 경우 일반적인 인덱싱 방식으로 요소에 접근할 수 있습니다. 반면, 사용자 정의 인덱스를 지정했다면 문자열 등의 커스텀 인덱스 값을 그대로 사용해 요소에 접근하고 결과를 콘솔에 출력할 수 있습니다.아래 예제를 통해 구체적으로 살펴보겠습니다.예제 코드import pandas as pd my_data = [34, 56, 78, 90, 123, 45] my_index = [ab, mn ,gh,kl, wq, az

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:195/450  20-컴퓨터/Page Goto:1 189 190 191 192 193 194 195 196 197 198 199 200 201