백준 알고리즘 87

백준 2167번 2차원 배열의 합 문제풀이, 파이썬

백준 2167번 : 2차원 배열의 합 문제풀이 [파이썬] 2167번 문제의 내용은 아래와 같습니다. 2차원 배열의 합 문제 2차원 배열이 주어졌을 때 (i, j) 위치부터 (x, y) 위치까지에 저장되어 있는 수들의 합을 구하는 프로그램을 작성하시오. 배열의 (i, j) 위치는 i행 j열을 나타낸다. 입력 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 합을 구할 부분의 개수 K(1 ≤ K ≤ 10,000)가 주어진다. 다음 K개의 줄에는 네 개의 정수로 i, j, x, y가 주어진다(1 ≤ i ≤ x ≤ N, 1 ≤ j ≤ y ≤ M)...

백준 알고리즘 2023.04.17

백준 1806번 부분합 문제풀이, 파이썬

백준 1806번 : 부분합 문제풀이 [파이썬] 1806번 문제의 내용은 아래와 같습니다. 부분합 문제 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. 출력 첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다. 예제 입력 1 복사 10 15 5 1 3 5 10 7 4 9 2 8 예제 출력..

백준 알고리즘 2023.04.16

백준 11660번 구간 합 구하기 5 문제풀이, 파이썬

백준 11660번 : 구간 합 구하기 5 문제풀이 [파이썬] 11660번 문제의 내용은 아래와 같습니다. 구간 합 구하기 5 문제 N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다. 예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자. 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다. 표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오. 입력 첫째 줄에 표의 크기 N과 합을 구해야 하는..

백준 알고리즘 2023.04.15

백준 11659번 구간 합 구하기4 문제풀이, 파이썬

백준 11659번 : 구간 합 구하기4 문제풀이 [파이썬] 11659번 문제의 내용은 아래와 같습니다. 구간 합 구하기 4 문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 제한 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N 예제 입력 1 복사 5 3 5 4 3 2 1 1 3 2 4 5 5 예제 출력 1 복사 12 9 1 #..

백준 알고리즘 2023.04.13

[알고리즘] 누적합 알고리즘 - 파이썬

누적합 알고리즘(Prefix sum) 누적합 알고리즘(Prefix sum)은 특정 구간에서 중간의 합계나 평균을 자주 구해야하는 경우에 사용할 수 있는 알고리즘이다. 단순히 반복문을 사용해서 알고리즘을 구현하게 된다면 시간이 많이 소요되고, 코딩 테스트에서 조건으로 주어지는 시간 제한을 지키지 못하는 경우가 생겨나게 된다. 누적합 알고리즘은 이런 시간 초과를 해결하기 위해서 구간별로 누적합을 계산해, 그 누적합을 저장하는 배열을 하나 만드는 방식으로 사용된다. 예를 들어 다음과 같은 배열이 주어졌다고 가정해보자. arr = [1, 8, 7, 4, 3, 5] 위와 같은 배열이 있을때, 각 구간의 누적합을 저장하는 새로운 배열을 아래와 같이 만들어준다. (가장 첫번째 원소로는 값 '0'을 넣어주었다.) pr..

백준 10101번 삼각형 외우기 문제풀이, 파이썬

백준 10101번 : 삼각형 외우기 문제풀이 [파이썬] 10101번 문제의 내용은 아래와 같습니다. 삼각형 외우기 문제 창영이는 삼각형의 종류를 잘 구분하지 못한다. 따라서 프로그램을 이용해 이를 외우려고 한다. 삼각형의 세 각을 입력받은 다음, 세 각의 크기가 모두 60이면, Equilateral 세 각의 합이 180이고, 두 각이 같은 경우에는 Isosceles 세 각의 합이 180이고, 같은 각이 없는 경우에는 Scalene 세 각의 합이 180이 아닌 경우에는 Error 를 출력하는 프로그램을 작성하시오. 입력 총 3개의 줄에 걸쳐 삼각형의 각의 크기가 주어진다. 모든 정수는 0보다 크고, 180보다 작다. 출력 문제의 설명에 따라 Equilateral, Isosceles, Scalene, Err..

백준 알고리즘 2023.04.10

백준 9063번 대지 문제풀이, 파이썬

백준 9063번 : 대지 문제풀이 [파이썬] 9063번 문제의 내용은 아래와 같습니다. 대지 문제 임씨는 1950 년 한국전쟁으로 많은 손해를 본 사람들 중 하나다. 전쟁 통에 손해보지 않은 사람이 어디 있을까 만은 그는 6.25 가 일어나기 전만 해도 충청도 지방에 넓은 대지를 소유한 큰 부자였다. 전쟁이 나자 임씨는 땅문서와 값 나가는 것들만 챙겨서 일본으로 피난을 가지만 피난 중에 그만 땅문서를 잃어버리고 만다. 전쟁이 끝난 후에 임씨의 땅은 이미 다른 사람들의 논밭이 되어 있었고, 임씨는 땅을 되찾으려 했지만 문서가 없으니 생떼 쓰는 것과 다를 바 없었다. 이러다가 임씨는 길바닥에 나앉게 생겼다. 이때, 임씨에게 좋은 생각이 떠올랐으니 바로 자신이 습관처럼 땅 깊숙이 뭔가 표식을 해놓았던 사실이다..

백준 알고리즘 2023.04.05

백준 12015번, 가장 긴 증가하는 부분 수열 2 문제풀이, 파이썬

백준 12015번 : 가장 긴 증가하는 부분 수열 2 문제풀이 [파이썬] 12015번 문제의 내용은 아래와 같습니다. 가장 긴 증가하는 부분 수열 2 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 예제 입력 1 복사 6 10 20 ..

백준 알고리즘 2023.03.27

[알고리즘] 이진 탐색 알고리즘(2)

본 포스팅에서는 이진 탐색 알고리즘에 대한 정리 내용을 담고있습니다. (본 알고리즘 포스팅은 유튜브 '이코테 2021 강의'를 참고하여 작성하였습니다.) https://www.youtube.com/@dongbinna 동빈나 www.youtube.com 파라메트릭 서치 파라메트릭 서치란 최적화 문제를 결정 문제 ('예' 혹은 '아니오')로 바꿔서 해결하는 기법 일반적으로 이런 파라메트릭 서치 문제는 이진 탐색을 이용하여 해결할 수 있다. ex) 특정한 조건을 만족하는 가장 알맞은 값을 빠르게 찾는 문제 1) 2023.03.16 - [백준 알고리즘] - 백준 2805번 나무 자르기 문제풀이, 파이썬 백준 2805번 나무 자르기 문제풀이, 파이썬 백준 2805번 : 나무 자르기 문제풀이 [파이썬] 2805번 ..

백준 2805번 나무 자르기 문제풀이, 파이썬

백준 2805번 : 나무 자르기 문제풀이 [파이썬] 2805번 문제의 내용은 아래와 같습니다. 나무 자르기 문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20..

백준 알고리즘 2023.03.16