일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Tips강좌
- Visual Studio
- 백준
- Windows
- 배열
- 이지스퍼블리싱
- Direct2D
- CS
- Desktop
- Javascript
- 김성엽
- c++
- c#
- c
- 연산자
- VS ERROR
- 프로그래밍
- 포인터
- Tips프로그래밍강좌
- Win32
- doit코틀린프로그래밍
- 알고리즘
- 함수
- 문법
- 지식나눔강좌
- 티스토리
- tipssoft
- 리뷰
- Programming
- Kotlin
- Yesterday
- Today
- Total
목록2019/10 (5)
F.R.I.D.A.Y.
10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net 이번에는 BAEKJOON 10845번이자 대표적인 선입선출의 구조를 같은 큐(Queue) 문제를 풀어봅니다. Code. #include #include typedef struct{ int *arr; // 데이터 메모리 포인터 int maxLength;// 가용 가능한 공간 길이 int length; // 현재 데이터가 담긴 길이 }queue; // 큐의 정보를 담은 스트럭처 queue* newQueue(int m..
동적할당은 프로그램에 조금만 규모가 생기면 잘 사용하게 되는 기술로 C언어에서는 함수를 이용해 동적할당을 받는데요, 동적할당을 하는 함수로는 대표적으로 아래와 같은 것들이 있습니다. malloc calloc realloc 이번 시간에는 위 함수들의 사용 목적에 대해 알아봅니다. # 이 함수들을 사용하기 위해서는 malloc.h 혹은 stdlib.h 헤더를 추가해야합니다. malloc 가장 기본이 되는 함수로서, 대체적으로 동적할당을 들어가게 되면 이 함수를 제일 처음 접하지 않을까 합니다. 이 함수는 아래와 같은 기본형을 가지고 있습니다. void *malloc(size_t size); // from MS DOCS void* malloc(size_t size); size 할당 받을 메모리 크기입니다. 기..
스택을 이용하는 문제라고는 하지만 잘 생각해보면 굳이 스택을 사용하지 않아도 되는 문제입니다. 문제의 핵심은 결국 괄호의 특성을 이해하는 것이라고 생각합니다. 결국 괄호가 제 기능을 하기 위해서는 여는 괄호( 와 닫는 괄호) 가 1대 1로 잘 맞아 떨어져야합니다. 단순히 숫자가 맞아야하는 것이 아니라, 앞서 여는 괄호가 n개 나왔다면 뒤에 닫는 괄호는 여는 괄후 수만큼, 즉 n개가 나와야합니다. 생각을 해보면 스택을 이용하지 않아도 됩니다. 정수를 저장하는 변수를 선언하여 여는 괄호를 만나면 1 올려주고, 닫는 괄호를 만나면 1 내려주면 됩니다. 이 변수의 값이 0보다 작으면 바로 문제에서 설명하는 올바르지 않은 괄호 문자열(VPS)가 아닌게 되는 것입니다. 위에서 설명한 변수가 아래에서는 parenth..
모든 수에 대해 연산을 행하면 속도가 느려지므로 이미 연산을 진행한 데이터를 보관하는 공간을 만들어 연산이 이루어진 숫자라면 시행하지 않도록 코드를 짜는 것이 유리하다. 편하게 재귀함수로 작성을 했지만 재귀함수를 사용하지 않더라도 충분히 작성이 가능하므로 블로그의 코드를 이해했다면 재귀함수를 일반 함수로 구성해보는 것도 좋겠다. Code. #include #include #include void ret(int* memo, int val){ int sum = val; while(val){ sum += val % 10; val /=10; } if(sum < 10000){ memo[sum] = 1; ret(memo, sum); } } int main(void){ int *memo = (int *)malloc(..
이 문제가 약간 부실하다고 생각한게, 혹은 유사한 문제를 풀다가 이 문제를 보아서인지는 모르겠지만, 처음 이게 무슨 말인가 했다. 123456 이라는 숫자가 있다면 각 자리수는 다음과 같다. 1 2 3 4 5 6 이 각 자리수의 차이가 일정한 숫자를 찾는 것이 주어진 문제이다. Code. #include int main(void){ int num; scanf("%d", &num); int i = 1, hanCount = 0; while(i