Song[coding diary index]

Song 배열에 코딩 흔적 남겨두기

백준 25

백준 2018번 수들의 합5 (C++)

2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 문제 분석 N이라는 숫자를 '연속'된 자연수의 합으로 표현하고, 이 조합의 개수를 구하는 문제이다. 주목해야 할 점은 3가지라고 생각한다. 1, 연속된 자연수. 2. 메모리의 크기.(32MB) 3. N의 크기 1. 연속된 자연수 - 자연수가 1개 혹은 여러 개가 되어도 연속된 자연수라면 조합에 포함이 된다. 즉, N이라는 숫자의 연속된 자연수는 최소 1개 이상이 될 것이다. 이 외의 연속된 자연수를 찾기 위해서는, 구간 합의 개념을 이용하면..

알고리즘 2023.08.29

백준 10986번 나머지 합 (C++)

10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 문제 분석 위 문제는 배열의 모든 조합이 M에 대해 나누어 떨어지는가에 대해 묻고있다. 처음 문제를 접했을 때, 구간 합에 대한 개념을 알고 있다면 쉽게 풀 수 있다는 생각이 드는 문제이다. 구간 합을 모르는 사람이라면, 아래 링크를 통해 공부하고 오길 바란다. 백준 11660번 구간 합 구하기5 (C++) 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ ..

알고리즘 2023.08.29

백준 11660번 구간 합 구하기5 (C++)

11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 문제 분석 문제는 2차원 배열안에서 (x1,y1) 에서 (x2, y2)의 합을 구하는 문제이다. 원소 하나하나를 더하기보다, 구간마다의 합을 더해서 연산의 속도를 최대한 빠르게 하는 것이 포인트. 즉, 구간 합에 대해 알고 있어야 하는 문제이다. 구간 합이란? 합 배열 S의 정의 S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i] (A[0]부터 A[i]까지의 합) 이라고 할 때, 합 배열..

알고리즘 2023.08.28

[Algorithm] 구간 합(prefix sum) 완.전.정.복

구간 합이란?연속된 숫자들의 배열에서, 원하는 구간까지의 합을 알고자 할 때 이용하는 알고리즘.ex) 1 ~ 10이 배열에 저장되어있다고 할 때, 합 배열은 1 3 6 10 ..과 같은 방식합 배열에서의 1 = 1 / 3 = 1+2 / 6 = 1+2+3 / 10 = 1+2+3+4 if) 난 3 ~ 6의 합에 대해 알고 싶은데 어떻게 해야하나요?answer) 1 ~ 6의 합에서 1 ~ 2의 합을 뺀다면, 원하는 답을 얻울 수 있어요! 공식합 배열 S의 정의S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i] (A[0]부터 A[i]까지의 합) 합 배열 S를 만드는 공식S[i] = S[i-1] + A[i] (더하고자 하는 A[i]를, 이전까지의 합S[i-1]의 합) 구간 합을 ..

알고리즘 2023.08.28

배열(array) vs 리스트(list)

배열- 인덱스를 사용하여 원소에 바로 접근 가능하다- 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다. 삭제하려면 주변 인덱스 값을 옮겨야 한다.- 배열의 크기는 선언할떄 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 있다.- 구조가 간단하다. (코테 사용) 리스트- 인덱스가 없어서 값에 접근하려면, head 포인터부터 순서대로 접근. 값에 접근 속도가 느리다.- 포인터로 연결되어 있기에, 데이터 삽입이나 삭제하는 연산속다가 빠르다.- 선언할 때, 크기 지정이 필요 없다. 크기가 유동적인 데이터를 다룰 때 적절하다.- 포인터를 저장할 공간이 필요해 구조가 복잡하다.

알고리즘 2023.08.28
LIST