[백준] 수열과 퀴리 13 Python 3 (Feat 비효율)
·
코딩/백준-알고리즘
세그먼트 트리와 지연 전파를 활용한 효율적인 구간 연산 처리세그먼트 트리(Segment Tree)와 지연 전파(Lazy Propagation)를 활용하여 구간 연산을 효율적으로 처리하는 파이썬 코드를 작성해 보겠습니다. 세그먼트 트리는 구간 합, 구간 최솟값, 구간 최댓값 등 다양한 구간 연산을 빠르게 처리할 수 있는 자료구조입니다. 여기에 지연 전파 기법을 추가하여 업데이트 연산을 최적화할 수 있습니다.문제 설명주어진 배열에 대해 다음과 같은 연산을 효율적으로 수행하는 프로그램을 작성합니다:특정 구간의 모든 원소에 값을 더하는 연산특정 구간의 모든 원소에 값을 곱하는 연산특정 구간의 모든 원소를 특정 값으로 바꾸는 연산특정 구간의 합을 구하는 연산이 문제는 세그먼트 트리와 지연 전파를 사용하여 해결할 ..
[백준] 9252 LCS 2 Python 3
·
코딩/백준-알고리즘
두 문자열 간의 최장 공통 부분 수열(Longest Common Subsequence, LCS)을 찾는 파이썬 코드를 작성해 보겠습니다. 이 문제는 DP(동적 프로그래밍)를 이용하여 해결할 수 있습니다문제 설명LCS(Longest Common Subsequence)는 두 문자열이 주어졌을 때, 두 문자열 모두에 부분 수열이 되는 문자열 중 가장 긴 문자열을 찾는 문제입니다. 예를 들어, 문자열 "ACAYKP"와 "CAPCAK"의 LCS는 "ACAK"입니다.접근 방식LCS 문제를 해결하기 위해 다음과 같은 동적 프로그래밍 접근 방식을 사용할 수 있습니다:두 문자열 A와 B의 길이를 측정합니다.각 부분 문자열의 LCS 길이를 저장할 DP 테이블을 만듭니다.두 문자열을 순회하며 DP 테이블을 채웁니다.DP 테..
[백준] 1144 싼 비용 Python 3
·
코딩/백준-알고리즘
파이썬을 사용하여 동적 계획법(DP)을 이용해 특정 문제를 해결하는 방법을 설명하겠습니다. 주어진 문제는 격자(grid) 형태로 주어지는 값들을 이용해 최적의 해를 구하는 것입니다. 이를 해결하기 위해 작성한 Python 코드를 소개하고, 각 부분이 어떻게 동작하는지 자세히 설명하겠습니다.문제 설명주어진 문제는 다음과 같습니다:𝑛×𝑚n×m 크기의 격자가 주어집니다.각 셀에는 비용(cost)이 주어집니다.우리는 특정 조건을 만족시키면서 이 격자를 통과할 때의 최소 비용을 계산해야 합니다.코드 설명다음은 문제를 해결하기 위해 작성한 Python 코드입니다.from sys import stdin# n과 m을 입력 받음n, m = map(int, stdin.readline().split())# 그리드를 입력..
[백준] 5257 timeismoney Python 3
·
코딩/백준-알고리즘
최적의 최소 신장 트리(MST) 찾기: 크루스칼 알고리즘과 삼분 탐색크루스칼 알고리즘과 삼분 탐색을 이용해 최적의 MST를 찾는 방법을 소개합니다. 이 방법은 특히 시간과 비용의 가중치를 조합하여 최적의 MST를 찾는 데 유용합니다.문제 설명주어진 그래프에서 모든 정점을 연결하는 간선들의 집합 중, 가중치의 합이 최소가 되는 집합을 찾아야 합니다. 각 간선은 시간과 비용이라는 두 가지 가중치를 가지며, 우리는 이 두 가중치를 조합하여 최적의 MST를 찾고자 합니다. 코드 설명유니온-파인드 자료구조유니온-파인드는 서로소 집합을 관리하기 위한 자료구조로, 두 집합을 합치거나 특정 원소가 속한 집합을 찾는 작업을 효율적으로 수행할 수 있습니다. 크루스칼 알고리즘크루스칼 알고리즘은 간선을 가중치 순으로 정렬한 ..
[백준] 1134 식 Python 3
·
코딩/백준-알고리즘
Python을 이용하여 '?' 문자가 포함된 수식을 복원하는 문제를 해결하는 방법을 설명하겠습니다. 이 문제는 수식에서 '?' 문자를 적절한 숫자로 대체하여 올바른 결과를 얻는 것이 목표입니다. 이를 해결하기 위해 작성한 Python 코드를 소개하고, 각 부분이 어떻게 동작하는지 자세히 설명하겠습니다.문제 설명주어진 문제는 다음과 같습니다:수식 형태: A + B = CA, B, C에는 0-9 사이의 숫자와 '?' 문자가 포함되어 있습니다.'?' 문자를 적절한 숫자로 바꾸어 올바른 수식을 복원해야 합니다.예를 들어, 입력이 ?2 + 3? = 55라면, 42 + 13 = 55와 같은 형태로 '?'를 대체해야 합니다.코드 설명다음은 문제를 해결하기 위해 작성한 Python 코드입니다.def c2i(c): ..
(SMD)LED 극성
·
전자공학/전자회로
SMD LED 극성에 대해 알아보자SMD LED(표면 실장형 LED)의 극성에 대해 이야기해 보겠습니다. SMD LED는 크기가 작고, 다양한 전자 기기와 회로에 사용되며, 정밀한 극성 확인이 필수적입니다. LED는 다이오드의 일종으로, 전류가 흐르는 방향이 정해져 있기 때문에 올바른 극성으로 연결하는 것이 중요합니다.LED의 기본 구조와 극성LED는 두 개의 단자가 있습니다A(Anode, +극): 전류가 들어가는 단자입니다.K(Cathode, -극): 전류가 나가는 단자입니다.왼쪽 그림에서 볼 수 있듯이, LED의 다리 중 길이가 긴 쪽이 A(Anode, +극)이며, 짧은 쪽이 K(Cathode, -극)입니다.SMD LED의 극성 표시오른쪽 그림은 SMD LED의 극성을 나타내는 다양한 방법을 보여줍니..
[백준] 4008 특공대 Python 3
·
코딩/백준-알고리즘
데크 - 누적 합, 동적 프로그래밍(DP) 및 데크를 결합하여 큰 데이터 세트를 효율적으로 처리하는 데 유용합니다.문제 개요N명의 병사가 주어졌을 때, 각 병사는 특정 전투력 값을 가지고 있습니다. 우리는 A, B, C라는 세 개의 계수를 사용하여 일련의 계산을 통해 전투력을 최대화하고자 합니다. 이 솔루션의 핵심은 데크를 사용하여 선형 함수를 효율적으로 관리함으로써 DP 전환을 최적화하는 것입니다.함수 T 설명함수 T(i, j, A, B)는 주어진 계수 A와 B 아래에서 점 i와 j로 정의된 두 직선의 교점을 계산합니다. 이 함수는 선이 더 이상 유효하지 않고 데크에서 제거될 수 있는지를 결정하는 데 중요한 역할을 합니다. 전체 코드다음은 전체 코드입니다:import sysfrom collections..
[백준] 1031 스타대결 Python 3
·
코딩/백준-알고리즘
파이썬을 사용하여 BFS(너비 우선 탐색) 알고리즘을 통해 최대 유량 문제를 해결하는 방법을 설명하겠습니다. 이 문제는 그래프 이론의 한 분야로, 네트워크 플로우 문제를 해결하는 데 사용됩니다. 주어진 문제를 해결하기 위해 작성한 Python 코드를 소개하고, 각 부분이 어떻게 동작하는지 자세히 설명하겠습니다.문제 설명주어진 문제는 다음과 같습니다:두 개의 행렬 𝑁N과 𝑀M이 주어집니다.각 행렬의 요소는 0 또는 1의 값을 가집니다.목표는 𝑁×𝑀N×M의 0과 1로 이루어진 최종 행렬을 만들어 각 행과 열의 합이 주어진 값과 동일하게 만드는 것입니다.이를 해결하기 위해서 네트워크 플로우 문제로 변환하고, BFS를 활용하여 최대 유량을 계산합니다.코드 설명다음은 문제를 해결하기 위해 작성한 Pytho..
[백준] 5979 남땜하기 C++ (Feat 고찰)
·
코딩/백준-알고리즘
Li Chao Segment Tree를 사용하여 최소 비용 트리 문제를 해결하는 방법에 대해 설명합니다. 이 알고리즘은 주어진 트리 구조에서 비용을 최소화하는 경로를 찾는 데 사용됩니다. 해당 알고리즘을 C++로 구현합니다문제 설명주어진 트리에서 각 노드를 방문하는 비용이 정의되어 있을 때, 특정 노드에서 시작하여 모든 노드를 방문하는 최소 비용을 계산하는 문제입니다. 이 문제를 해결하기 위해 우리는 Li Chao Segment Tree라는 자료 구조를 사용합니다.Li Chao Segment Tree란?Li Chao Segment Tree는 선형 함수들의 최소값을 구하는 데 최적화된 자료 구조입니다. 이 자료 구조는 Convex Hull Trick과 비슷하지만, 세그먼트 트리의 형태로 구현되어 특정 범위..