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

Python

  1. 파이썬으로 정확히 k번의 점프로 마지막 섬에 도달하는 방법: 최대 점프 거리의 최솟값 찾기

    숫자 배열 A가 주어졌을 때, 배열 A의 i번째 숫자는 i번째 섬의 위치를 나타냅니다. 또 하나의 정수 k(1 ≤ k < N)가 함께 주어집니다. 한 사람이 0번째 섬에 서 있고, 정확히 k번의 점프를 통해 마지막 섬까지 도달해야 한다고 가정해 봅시다. 이때 우리가 구해야 하는 것은 여정 동안 수행하게 되는 점프 중 가장 긴 점프의 길이가 최소가 되도록 하는 값입니다. 모든 섬의 위치는 오름차순으로 정렬되어 있다는 점에 유의해야 합니다.예를 들어 입력이 A = [7, 20, 41, 48], k = 2라고 해보겠습니다. 이 경우 출력

  2. 파이썬으로 A로 나누어 떨어지고 자릿수의 합이 B와 같은 최소 양의 정수 찾기

    두 개의 숫자 A와 B가 주어졌을 때, A로 나누어 떨어지면서 각 자릿수의 합이 B와 같은 최소 양의 정수 M을 구해야 합니다. 만약 조건을 만족하는 수가 존재하지 않는다면 -1을 반환합니다.예를 들어 입력이 A = 50, B = 2라고 가정해 보겠습니다. 이때 출력은 200이 됩니다. 200은 50으로 나누어 떨어지고, 자릿수의 합도 2 + 0 + 0 = 2로 B와 일치하기 때문입니다.이 문제는 너비 우선 탐색(BFS)을 활용하면 효율적으로 해결할 수 있습니다. 숫자를 왼쪽 자리부터 한 글자씩 붙여 가며 상태를 확장하고, 이미 방

  3. Python으로 크기 N인 링 위 임의의 정수 지점에서 A와 B까지 거리 합의 최솟값 구하기

    문제 개요1부터 N까지의 숫자가 원형으로 배치된 링(ring)이 있다고 가정해 봅시다. 여기에 두 개의 숫자 A와 B가 주어집니다. 우리는 링 위의 임의의 위치(예: x)에 서서, x에서 A까지의 거리와 x에서 B까지의 거리의 합(Z = x→A 거리 + x→B 거리)을 계산합니다. 목표는 이 합 Z를 최소로 만드는 지점 x를 찾고, 그 최솟값을 반환하는 것입니다. 단, x는 A 또는 B와 같은 위치일 수 없다는 조건이 있습니다.예를 들어 입력이 N = 30, A = 10, B = 20이라면 출력은 10입니다. x = 15를 선택하면

  4. Python으로 두 시리즈의 결합 평균과 분산 계산하기

    개요통계 분석에서는 두 개의 서로 다른 데이터 집합(시리즈)을 하나로 합쳤을 때의 평균과 분산을 구해야 하는 경우가 자주 발생합니다. 이 글에서는 Python을 사용하여 크기가 서로 다른 두 시리즈 A1과 A2가 주어졌을 때, 결합된 전체 시리즈의 평균과 분산을 계산하는 방법을 단계별로 살펴보겠습니다.예를 들어 입력이 다음과 같다고 가정해 보겠습니다.A1 = [24, 46, 35, 79, 13, 77, 35] (크기 7)A2 = [66, 68, 35, 24, 46] (크기 5)이때 기대되는 결과는 다음과 같습니다.평균(mean):

  5. Python으로 배열 C[i] = d*A[i] + B[i]에서 0의 개수를 최대화하는 d 값 찾기

    정수로 이루어진 두 배열 A와 B가 주어졌다고 가정해 봅시다. 이제 i번째 원소가 d * A[i] + B[i]로 정의되는 배열 C를 생각해 보겠습니다. 여기서 d는 임의의 실수입니다. 우리의 목표는 배열 C에 포함된 0의 개수가 최대가 되도록 하는 d 값을 찾고, 그때의 0의 개수까지 구하는 것입니다.예를 들어 입력이 A = [15, 40, 45], B = [4, 5, 6]라면, 출력은 d = -0.266666...이 되고, 이때 0의 개수는 1개입니다.문제 해결 접근 방식핵심 아이디어는 간단합니다. C[i] = d * A[i] +

  6. Python으로 행렬의 모든 행에서 공통 고유 요소 찾는 방법

    m × m 크기의 정방 행렬(square matrix)이 주어졌을 때, 행렬의 모든 행에 공통적으로 존재하는 서로 다른(distinct) 요소들을 찾아야 합니다.예를 들어 입력이 아래와 같다고 가정해 보겠습니다.13215417153243615215412152643221942215이 경우 출력 결과는 [2, 4, 15]가 됩니다.문제 해결 접근 방식이 문제는 각 행을 먼저 정렬한 뒤, 포인터(인덱스)를 이용해 여러 정렬된 배열을 동시에 순회하는 방식으로 효율적으로 해결할 수 있습니다. 단계별로 살펴보면 다음과 같습니다.sortRows

  7. 파이썬 비트 배열(Bit Array)로 배열의 중복 요소 찾기: 4KB 메모리 제약 문제

    문제 소개 서로 다른 n개의 숫자로 이루어진 배열이 있다고 가정해 보겠습니다. n은 최대 32,000까지 가능하고, 배열에는 중복된 값이 존재할 수 있으며 n의 실제 크기는 미리 알 수 없습니다. 이때 사용할 수 있는 메모리가 단 4킬로바이트(KB)뿐이라면, 어떻게 해야 배열 안의 모든 중복 값을 찾아낼 수 있을까요? 예를 들어 입력이 [2, 6, 2, 11, 13, 11]이라면, 2와 11이 각각 두 번씩 등장하므로 출력은 [2, 11]이 됩니다. 접근 방법: 비트 배열(Bit Array) 핵심 아이디어는 각 숫자를 비트 1개에

  8. Python으로 단조 증가 수열에서 특정 값의 위치 찾기

    이번 글에서는 숫자 l과 단조 증가(monotonic increasing) 수열 f(m)이 주어졌을 때, f(m) = l을 만족하는 m 값을 찾는 방법을 다룹니다. 여기서 함수 f(m)은 다음과 같이 정의됩니다.f(m) = am + bm·[log2(m)] + cm³단, a = 1, 2, 3, … / b = 1, 2, 3, … / c = 0, 1, 2, 3, … 이며, [log2(m)]은 밑이 2인 로그값을 내림(버림)한 정수입니다.[log2(m)]의 계산 방식내림 연산이 적용되므로 m의 구간에 따라 값이 다음과 같이 결정됩니다.m

  9. 파이썬으로 소수의 배수가 되는 등차수열 첫 항의 위치 찾기

    문제 개요 등차수열(Arithmetic Progression, AP)의 첫째 항 A와 공차 D가 주어져 있고, 소수 P가 하나 더 주어졌다고 가정해 보겠습니다. 이때 구해야 하는 것은 해당 등차수열에서 처음으로 소수 P의 배수가 되는 항의 위치입니다. 예를 들어 입력이 A = 3, D = 4, P = 5라면 결과는 3이 됩니다. 네 번째 항이 소수 5의 배수이기 때문인데, 실제로 항들을 확인해 보면 다음과 같습니다. 첫째 항 = 3 둘째 항 = 3 + 4 = 7 셋째 항 = 3 + 2×4 = 11 넷째 항 = 3 + 3×4 = 1

  10. 파이썬으로 합이 N과 같고 곱이 최대가 되는 N의 4개 약수 찾기 - 세트 2

    문제 개요하나의 숫자 N이 주어졌을 때, N의 약수 가운데 네 개를 골라 다음 두 조건을 모두 만족하는 조합을 찾아야 합니다.네 약수의 합은 N과 같아야 합니다.네 약수의 곱은 가능한 한 커야(최대) 합니다.곱을 극대화하기 위해 네 약수는 서로 동일한 값이어도 괜찮습니다.예시예를 들어 입력이 N = 60이라면 출력은 50625입니다. 60의 약수는 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60이며, 그중 15를 네 번 선택했을 때 곱이 가장 커집니다. 실제로 15 × 15 × 15 × 15 = 50625로

  11. Python으로 1부터 N 사이 배열에서 누락된 4개의 숫자 찾기

    서로 다른 숫자들로 이루어진 배열이 있고, 각 숫자는 [1, N] 범위 안에 속하며, 배열의 크기는 (N-4), 중복되는 요소는 하나도 없다고 가정해 보겠습니다. 그렇다면 1부터 N까지의 숫자 중 정확히 4개가 배열에 빠져 있다는 사실을 알 수 있습니다. 이번 글에서는 이렇게 누락된 4개의 숫자를 정렬된 순서대로 찾는 방법을 살펴보겠습니다. 예를 들어 입력이 A = [2, 8, 4, 13, 6, 11, 9, 5, 10]이라면 출력은 [1, 3, 7, 12]가 됩니다. 접근 방식: 부호 표시(Sign Marking) 기법 이 문제는

  12. 파이썬(Python)으로 x축·y축에 평행한 정사각형을 만드는 네 점 찾기

    n개의 좌표 점이 주어졌을 때, 그중 네 점을 골라 변이 x축과 y축에 평행한 정사각형을 만들어야 합니다. 조건을 만족하는 정사각형을 만들 수 없다면 만들 수 없음을 반환하고, 정사각형을 여러 개 만들 수 있다면 그중 면적이 가장 큰 것을 선택해야 합니다. 예를 들어 입력이 n = 6, points = [(2, 2), (5, 5), (4, 5), (5, 4), (2, 5), (5, 2)]라면 출력은 다음과 같습니다. 변의 길이(side): 3 꼭짓점(points): (2, 2), (5, 2), (2, 5), (5, 5) 접근 방

  13. Python으로 무방향 그래프에서 주어진 크기의 독립 집합 존재 여부 확인하기

    문제 개요무방향 그래프가 하나 주어졌을 때, 이 그래프가 크기가 l인 독립 집합(independent set)을 포함하는지 확인해야 합니다. 크기 l의 독립 집합이 하나라도 존재하면 Yes를, 존재하지 않으면 No를 반환하면 됩니다.여기서 그래프의 독립 집합이란 서로 직접 연결되어 있지 않은 정점(vertex)들의 집합을 의미한다는 점을 기억해야 합니다. 즉, 집합 안의 어떤 두 정점 사이에도 간선이 존재하지 않아야 합니다.예를 들어 입력이 다음과 같고 L = 4라고 가정해 보겠습니다.이 경우 출력은 Yes가 됩니다.접근 방법: 백

  14. Python으로 이진 트리의 특정 수직 레벨이 정렬되어 있는지 확인하는 방법

    이진 트리가 하나 주어져 있다고 가정해 보겠습니다. 이때 해결해야 할 문제는 해당 트리의 특정 수직 레벨(vertical level)에 속한 노드들이 정렬되어 있는지 확인하는 것입니다. 여기서 수직 레벨이란, 왼쪽 자식 노드는 부모 노드보다 1 작은 레벨에, 오른쪽 자식 노드는 부모 노드보다 1 큰 레벨에 위치한다는 개념을 의미합니다. 만약 두 노드가 화면상 같은 위치에서 겹치더라도, 각 노드가 실제로 속한 레벨을 기준으로 정렬 여부를 판단하면 됩니다.예를 들어 검사할 레벨이 l = -1일 때 다음과 같은 트리가 주어진다면,레벨 -

  15. Python으로 비용·수량 범위 내에서 주어진 비율을 만족하는 조합 찾기

    비용이 lowCost부터 upCost 사이의 범위에 있고, 수량이 lowQuant부터 upQuant 사이의 범위에 있다고 가정해 봅시다. 이때 비율 r = 비용 ÷ 수량을 만족하는 조합이 실제로 존재하는지 확인하는 것이 문제입니다.예를 들어, 입력이 lowCost = 2, upCost = 10, lowQuant = 3, upQuant = 9, r = 3이라면 결과는 True입니다. 비용 = r × 수량 = 3 × 3 = 9로 계산했을 때, 비용 9는 범위 [2, 10] 안에 있고 수량 3 역시 범위 [3, 9] 안에 있기 때문입니다

  16. 파이썬으로 컵과 접시를 선반에 깔끔하게 정리할 수 있는지 확인하는 방법

    문제 개요배열 p에는 세 가지 종류의 컵이, 배열 q에는 세 가지 종류의 접시가 담겨 있고, 사용할 수 있는 선반의 개수는 m개라고 가정해 봅시다. 이때 주어진 조건을 만족하도록 컵과 접시를 선반에 깔끔하게 정리할 수 있는지 확인하는 것이 이번 글의 목표입니다.깔끔한 정리를 위한 조건컵과 접시의 배치가 깔끔하다고 판단하려면 다음 세 가지 조건을 모두 충족해야 합니다.하나의 선반에는 컵과 접시를 함께 둘 수 없습니다.하나의 선반에는 최대 5개의 컵만 놓을 수 있습니다.하나의 선반에는 최대 10개의 접시만 놓을 수 있습니다.예제로 이해

  17. Python 백트래킹으로 그래프에서 길이가 k보다 긴 단순 경로 찾기

    문제 정의 그래프 하나와 시작 정점(source), 그리고 숫자 k가 주어졌다고 가정해 보겠습니다. 여기서 k는 시작 정점에서 목적지까지 도달해야 하는 경로 길이를 의미합니다. 우리가 확인해야 할 것은, 시작 정점에서 출발하여 다른 임의의 정점에서 끝나는 사이클이 없는 단순 경로(simple path) 중 총 길이가 k보다 긴 것이 존재하는지 여부입니다. 예를 들어 Source = 0, k = 64가 입력으로 주어진다면 결과는 True입니다. 0 → 7 → 1 → 2 → 8 → 6 → 5 → 3 → 4로 이어지는 단순 경로가 존재

  18. Python으로 S1 접두사와 S2 접미사를 이어 붙여 회문이 되는 인덱스 i 찾기

    길이가 같은 두 문자열 S1과 S2가 주어졌을 때, S1의 접두사와 S2의 접미사를 이어 붙였을 때 회문(palindrome)이 되도록 하는 인덱스 i를 찾는 문제입니다. 즉, S1[0...i]와 S2[i+1...n-1]를 연결한 결과가 앞뒤로 읽어도 같은 문자열이 되는 i를 구하고, 그런 인덱스가 존재하지 않으면 -1을 반환해야 합니다. 문제 예시 예를 들어 입력이 S1 = pqrsu, S2 = wxyqp라고 가정해 보겠습니다. 이 경우 출력은 1입니다. S1[0..1] = pq, S2[2..n-1] = ypq이고, 이 둘을 연

  19. 파이썬 알고리즘: 이진 배열에서 0을 1로 바꿔 가장 긴 연속된 1 시퀀스를 만드는 인덱스 찾기 (Set-2)

    문제 정의 하나의 이진 배열(binary array)이 주어졌다고 가정해 봅시다. 목표는 배열에 있는 0 중 하나를 1로 바꿨을 때 가장 긴 연속된 1 시퀀스가 만들어지는 0의 위치(인덱스)를 찾는 것입니다. 예를 들어 입력이 [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1]이라면 정답은 10입니다. 인덱스 10의 0을 1로 바꾸면 배열이 [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1]이 되어, 인덱스 6부터 12까지 길이 7짜리 연속된 1 구간이 생깁니다. 알고리즘 접근 방식 이 문제

  20. 파이썬으로 인코딩된 문자열을 해독해 k번째 문자 찾기 (Set – 2)

    인코딩된 문자열에서는 부분 문자열의 반복이 부분 문자열 뒤에 반복 횟수를 붙이는 방식으로 표현됩니다. 예를 들어 문자열이 pq2rs2이고 k=5라면, 해독된 문자열은 pqpqrsrs이며 5번째 문자는 r입니다. 이때 반복 횟수가 한 자리 숫자를 넘는 두 자리 이상의 값일 수도 있다는 점을 반드시 고려해야 합니다.예를 들어 입력이 string = pq4r2ts3, k = 11이라면 해독 결과는 pqpqpqpqrrtststs가 되고, 11번째 문자인 t가 출력됩니다.문제 해결 접근 방법다음 단계를 따라 문제를 해결할 수 있습니다.결괏값

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:159/450  20-컴퓨터/Page Goto:1 153 154 155 156 157 158 159 160 161 162 163 164 165