728x90

코드 71

백준] 2003 - 수들의 합2

시간 제한 : 0.5초메모리 제한 : 128MB 입력첫째 줄에 N(1≤N≤10,000), M(1≤M≤300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. 출력첫째 줄에 경우의 수를 출력한다. 소스코드 #include #include using namespace std; int main(void) { int n, m, s, e, sum = 0, cnt = 0; cin >> n >> m; vector arr(n); for (int i = 0; i > arr[i]; s = 0, e = 0; while (1) { if (sum >= m) sum -= arr[e++]; e..

백준] 2564 - 경비원(KOI 2007 지역본선 초등부)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 블록의 가로의 길이와 세로의 길이가 차례로 주어진다. 둘째 줄에 상점의 개수가 주어진다. 블록의 가로의 길이와 세로의 길이, 상점의 개수는 모두 100이하의 자연수이다. 이어 한 줄에 하나씩 상점의 위치가 주어진다. 상점의 위치는 두 개의 자연수로 표시된다. 첫째 수는 상점이 위치한 방향을 나타내는데, 1은 블록의 북쪽, 2는 블록의 남쪽, 3은 블록의 서쪽, 4는 블록의 동쪽에 상점이 있음을 의미한다. 둘째 수는 상점이 블록의 북쪽 또는 남쪽에 위치한 경우 블록의 왼쪽 경계로부터의 거리를 나타내고, 상점이 블록의 동쪽 또는 서쪽에 위치한 경우 블록의 위쪽 경계로부터의 거리를 나타낸다. 마지막 줄에는 동근이의 위치가 상점의 위치와 같은 방식으로 ..

백준] 4539 - 반올림(ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 테스트 케이스의 개수 n이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 정수 x가 주어진다. (0 ≤ x ≤ 99999999) 출력각 테스트 케이스마다 입력으로 주어지는 정수를 문제 설명에 나온 것처럼 반올림한 결과를 출력한다. 소스코드 #include #include using namespace std; int main(void) { int n, x, result, itmp; double dtmp; cin >> n; while (n--) { cin >> x; for (itmp = 0; pow(10, itmp) < x; itmp++); result = x; for (int i = 1; i < itmp; i++) { dtmp = (do..

백준] 2740 - 행렬 곱셈

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째줄부터 N개의 줄에 행렬 A의 원소 M개가 차레대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개가 차례대로 주어진다. N과 M, 그리고 K는 100보다 작거나 같고, 행렬의 원소는 절대값이 100보다 작거나 같은 정수이다. 출력첫째줄부터 N개의 줄에 행렬 A와 B를 곱한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다. 소스코드 #include using namespace std; int main(void) { int A[100][100], B[100][100], C[100][100] = { 0, }, n, m, k; cin >> n >>..

C, C++] 메모리 영역(Code, Data, Stack, Heap)

프로그램 실행 시 할당되는 메모리 영역은 Code, Data, Stack, Heap, 네 가지로 분류할 수 있는데, 이에 대한 이해가 아예 없는 상태에서도 자연스럽게 Stack, Heap에 대한 감이 잡히게 된다. 확실히 이들에 대해서 조금 정리해두는 것이 좋을 것 같아 글을 끄적여 놓는다. Code작성한 코드라고 보면 되며 프로그램 종료 시점까지 메모리에 적재됨. Data전역 변수, static 변수 등이 저장되는 영역으로 이 역시 프로그램 종료 시점까지 메모리에 적재됨. Stack자료구조를 접한 사람들이 아는 그 스택의 성격(LIFO)을 가지고 있음.함수 호출, 지역 변수, 매개 변수, 반환 값 등을 저장하며, 함수 종료 시점에 시스템에 반환됨.프로그램에서 사용하는 임시 메모리 영역으로, 컴파일 시점..

Algorithm] 경로 탐색 - 2

이전 포스팅에서도 말했다시피, 일반적인 재귀 방법을 사용하는 건 시간이 오래 걸린다는 단점을 가지고 있다. 메모화재귀는 동적계획법을 재귀적으로 사용하는 것으로 동적계획법의 일종으로한 번 계산이 진행된 것은 추가로 진행하지 않는 것을 목표로 하기 때문에깊이 우선 탐색을 응용해 (1,1)에 하위에서 생성된 계산값을 미리 작성해두어만일 다시 접근이 이뤄지면 그 값을 반환시키는 것을 말한다. 깊이 우선 탐색을 통해서 일반적인 재귀 방법으로 접근했을 때 중복되는 작업들을 많이 걸러낼 수 있어서제한 시간 초과라는 문제를 극복할 수 있다. const int h = 5, w = 4; int Memo_recursion[h + 1][w + 1]; int dfs(int nowh, int noww) { if (nowh > h..

728x90