*개인적인 공부 기록용으로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. 모호성(Ambiquity) -1 모호성(Ambiquity) -2 using namespace 사용 시 유의점 -1 모호성(Ambiguity) 프로그래밍을 하다보면, 변수와 함수의 이름이 겹치는 경우가 발생할 수 있다. 객체지향 언어에서는 오버라이딩이나 오버로딩과 같이 동일한 이름의 함수를 사용하도록 권장하는 상황도 있다. 이 때 컴파일러는 어떠한 변수나 함수를 선택해야 할 지 모르는 모호성(Ambiguity)이 발생한다. namespace a { int var = 10; } namespace b { int var = 10; } int main() { cout
#INFO 난이도 : SILVER1 문제유형 : 다이나믹 프로그래밍(DP) 출처 : 11660번: 구간 합 구하기 5 (acmicpc.net) #SOLVE N * N 크기의 표를 저장할 2차원 배열과, 표를 저장한 2차원 배열의 [i][j] 번째 까지의 합을 저장할 dp 배열을 선언한다. int arr[1025][1025] = {}; int dp[1025][1025] = {}; 다음으로 Arr 배열과 Dp 배열을 초기화한다. Arr 배열은 그냥 입력받으면 되기에 설명은 생략하도록 하겠다. Dp 배열의 점화식 원리는 다음과 같다. (1,1) 부터 (4,4) 까지의 합을 구하는 상황을 예시로 생각해보자. 1. dp[i-1][j] 값과 dp[i][j-1] 값을 더한다. 2. 그러면 1 ~ 36 사이의 값은 중..
#INFO 난이도 : SILVER3 알고리즘 유형 : 다이나믹 프로그래밍(DP) 출처 : 11659번: 구간 합 구하기 4 (acmicpc.net) #SOLVE 작은문제의 답으로 부터 큰 문제의 답을 도출하는 다이나믹 프로그래밍(DP) 알고리즘으로 풀이했다. arr[] = 원소를 저장할 배열 dp[] = arr[i] 까지의 합을 저장할 배열 이때 dp[0]의 값은 arr[i]의 값과 동일하니 미리 초기화해 두고, dp[i] = dp[i-1] + arr[i] 라는 점화식을 세워 dp[] 배열을 초기화한다. int arr[100001] = {0,}; int dp[100001] = {0,}; for (int i = 0 ; i > arr[i]; } dp[0] = arr[0]; f..
* 개인적인 공부 기록용으로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. 쉼표 -1 분리자 (Seperator) -2 콤마 연산자 (Comma Operator) -3 콤마 연산자의 우선순위 -4 사용예제 C++에서의 쉼표(,)는 다양한 기능을 수행한다. -1 분리자 (Seperator) 첫 번째로 우리에게 가장 익숙한 분리자(Seperator) 기능이 있다. int a , b; 분리자는 말 그대로 변수의 선언을 구분해 준다. 예를 들어 위와 같이 변수의 선언부에 분리자를 사용하면 한줄에 변수 a와 b를 메모리 공간에 할당할 수 있다. -2 콤마 연산자 (Comma Operator) 다음으로 쉼표(,)는 콤마 연산자 (Comma Operator) 기능을 수행한다. 콤마 연산자란 두가지 표현..
#INFO 난이도 : BRONZE1 출처 : 1193번: 분수찾기 (acmicpc.net) #SOLVE 1. N이 몇 번째 대각선에 위치하는지 구한다. 우선, 입력받은 N이 몇 번째 대각선에 위치하고 있는지 구해야 한다. 예를 들어 입력받은 N이 10이라면 N의 값은 4/1로, 4번째 대각선에 위치한다. 반복문을 돌려서 N의 값이 i보다 작아진 시점에 해당하는 i번째 대각선에 N번째 원소가 존재한다. //N이 몇 번째 대각선에 존재하는 지 판별 int i = 1; while (N > i) { N -= i; i++; } 2. N이 존재하는 대각선이 홀수번째인지, 짝수번째인지 구한다. 대각선이 홀수번째 대각선인지, 짝수번째 대각선인지에 따라서 식이 달라진다. 하지만 어차피 짝수번째 대각선의 형태는 홀수번째와..