본문 바로가기

게임프로그래밍/C++

(2)
[알고리즘] 합배열로 배열에서 일정 범위의 각 원소들의 합을 쉽게 구하기 1. 구간합 이론 합배열이란 기존 배열의 0번 인덱스부터 i번째 인덱스까지 더한 값을 가지고 있는 배열을 말한다. 배열 A가 [1, 3, 5, 2, 7] 을 가지고 있다고 하자. 그럼 합배열 S는 다음과 같이 구할 수 있다. S[0] == A[0] == 1S[1] == A[0] + A[1] == S[0] + A[1] == 4S[2] == A[0] + A[2] + A[3] == S[1] + A[2] == 9...이런 식으로 계산하다 보면 아래와 같은 공식이 나오게 된다.S[i] == A[0] + ... + A[i] == S[i -1] + A[i] 이제 이렇게 하면 원하는 구간의 합을 출력을 할 때 합배열 S의 i번째 인덱스만 출력하면 된다. 만약 A[1] ~ A[3] 까지의 합을 구하고 싶다고 하면 S[0..
[C++] 숫자로 이루어진 문자열 각 자릿수들의 합 구하기 일정 길이의 문자열이 숫자로만 이루어져 있을 때 이 숫자들의 합을 구하는 방법이다. 컴퓨터에서 문자는 전부 아스키 코드로 저장이 되고 이 아스키 코드의 값을 알면 문자를 숫자로 바꿀 수 있다.문자 '0'의 경우 아스키 코드로 48이고, 문자 '1'의 경우 아스키 코드로 49이다. 문자 '1'을 숫자 1로 바꾸기 위해서는 문자 숫자에서  문자'0'을 빼면 된다. char c = '1';int i = c - '0'; 이렇게 하면 i에는 1의 값이 들어간다. (문자열 '1'은 아스키 코드로 49이고 문자열 '0'은 아스키 코드로 48이기 때문에 계산을 하면 1이 된다) 문자열의 각 자릿수를 더하는 방법은 위의 방법을 응용하면 된다. #include #include int main() { int sum =..