본문 바로가기
반응형

전체 글67

[C++] Stack overflow (Visual Studio에서 Stack Size 변경 해보기) Stack overflow는 스택 포인터가 스택의 경계를 넘어설 때 일어난다. 즉, 메모리 영역의 스택범위가 초과한 경우 발생하는 에러다. 메모리에서 스택 영역은 함수 호출 시, 생성되는 지역 변수 및 매개 변수가 저장되는 공간이다. C++ IDE의 대표적인 visual studio는 스택 사이즈의 디폴트값으로 1MB를 제공해준다. 여기서 한번 실험해 보자. 1MB는 약 1000,000B 이므로, 250,001 크기의 int타입 배열을 main함수에 선언해 보도록 한다. (int타입은 4B 크기를 가진다.) 즉, 배열의 크기는 4B X 250,001개 = 1000,004B를 가진다. 과연 Stack overflow에러가 날까? 결과화면 아무 문제없이 컴파일 되는 것을 볼 수 있다. 이는 1MB는 사실 1.. 2019. 4. 2.
[백준] 아기상어(16236) 아기 상어(16236번) 문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다. 더 이상 먹을 수 있는 물고기가 공간에.. 2019. 4. 2.
[백준] 수 고르기(2230) 수 고르기(2230번) 문제 N(1≤N≤100,000)개의 수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 수열이 {1, 2, 3, 4, 5}라고 하자. 만약 M=3일 경우, 1 4, 1 5, 2 5를 골랐을 때 그 차이가 M 이상이 된다. 이 중에서 차이가 가장 작은 경우는 1 4나 2 5를 골랐을 때의 3이 된다. 입력 첫째 줄에 두 정수 N, M(0≤M≤2,000,000,000)이 주어진다. 다음 N개의 줄에는 차례로 A[1], A[2], …, A[N]이 주어진다. 각각의 A[i]는 0 ≤ |A[i]| ≤ 1,000,000,000을 만족한다 풀.. 2019. 4. 2.
[백준] 도영이가 만든 맛있는 음식(2961) 도영이가 만든 맛있는 음식(2961번) 문제 도영이는 짜파구리 요리사로 명성을 날렸었다. 이번에는 이전에 없었던 새로운 요리에 도전을 해보려고 한다. 지금 도영이의 앞에는 재료가 N개 있다. 도영이는 각 재료의 신맛 S와 쓴맛 B를 알고 있다. 여러 재료를 이용해서 요리할 때, 그 음식의 신맛은 사용한 재료의 신맛의 곱이고, 쓴맛은 합이다. 시거나 쓴 음식을 좋아하는 사람은 많지 않다. 도영이는 재료를 적절히 섞어서 요리의 신맛과 쓴맛의 차이를 작게 만들려고 한다. 또, 물을 요리라고 할 수는 없기 때문에, 재료는 적어도 하나 사용해야 한다. 재료의 신맛과 쓴맛이 주어졌을 때, 신맛과 쓴맛의 차이가 가장 작은 요리를 만드는 프로그램을 작성하시오. 풀이 재귀함수를 이용해서 풀 수 있는 문제이다. 주어진 N.. 2019. 4. 2.
반응형