본문 바로가기

c언어14

[알고리즘] # 1. 그리디 알고리즘 (Greedy Algorithm) 이론과 예제 풀이 풀이에 사용한 언어 : C언어 그리디 알고리즘 - 현재 주어진 Step만을 기준으로 하여, 최적의 해를 구하는 알고리즘이다. 다만, 매 Step마다 최적의 해를 구했다해도 최종 결과는 최적의 해가 아닐 수 있다. 그래서 불완전한 알고리즘이며 특수한 경우에만 그리디 알고리즘을 쓴다. 대표적인 예제가 거스름돈이다. 우리가 맥도날드에서 상하이스파이시버거세트를 산다하자. 한 때, 굉장히 좋아했는데 이사한 집 근처에 맥날이 없어서 가격이 기억안나지만 대충 5500원이였던 것 같다. 10000원을 지불하고 4500원을 거슬러 받는다 하면, 일반적으로 1000원 4장, 500원 1개로 총 5번의 거스름을 받는게 맞다. 화폐는 그 단위가 5000,1000,500,100... 이런 식으로 정해져 있고 내림차순 (혹은 오.. 2022. 7. 11.
[C언어] # 10. 동적 메모리 할당 malloc 함수 (Stack & Heap 영역) malloc 함수를 설명하기 전에 변수가 저장되는 메모리 공간의 종류들에 대해 설명을 먼저 해보고자 합니다. 메모리 공간은 여러 가지가 있지만 대표적으로 전역변수가 저장되는 Data영역 , 지역변수가 저장되는 Stack영역. 그리고 메모리의 은행 창고의 역할을 하는 Heap영역이 있습니다. 이 글에서 쓰는 동적 메모리란 사용자가 메모리를 자유자재로 할당받는다는 것을 의미합니다. 즉, Heap영역으로부터 메모리를 필요한만큼 빌려쓰고 반환을 합니다. 이게 참 좋은게 배열을 다룰 때입니다. 예를 들어서, 대학교에서 어떤 강의의 수강생에 대한 재수강 여부를 관리하고자 합니다. 여러분들도 아시다시피 중간에 수강철회하는 사람, 새로 수강신청을 한 사람들이 있습니다. 즉, 상황에 따라 유동적으로 바뀝니다. 대략 이 .. 2022. 2. 25.
[C언어] # 9. 포인터에 대한 담백한 이해 (쉽게 설명) C언어를 공부하면서 가장 어려웠던 3가지 개념을 꼽으라면 동적메모리할당, 포인터, 구조체였던거 같습니다. 오늘 작성할 글은 포인터입니다. 저도 많이 부족하지만 포인터에 대한 간략한 이해를 도와보겠습니다. 포인터는 어떤 변수가 메모리 공간을 할당받고 저장되어있을 때, 그 변수가 살고있는 메모리 주소값을 가리키는 것입니다. 말 그대로 진짜 'Point!'인 셈이죠. 레이저 포인터할 때 그 포인터입니다. 우리가 어떤 변수의 초기값을 선언할 때는 항상 그 값들이 가지는 고유주소를 배정받게 됩니다. 이 주소의 값을 보는 방법은 printf를 통해 형식 지정자 "%p"를 사용하면 됩니다. 5라는 값은 현재 000000000062FE1C 라는 주소에서 살고 있군요. * 주의사항 : 앰퍼샌드 & 기호는 두개를 쓰면 '.. 2022. 2. 24.
[C언어] # 8. 배열 기초 응용 문제 (최대값 & 최소값 구하는 프로그램) : 백준 10818번 C언어 10818번: 최소, 최대 (acmicpc.net) 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 주어진 문제는 이렇습니다. 입력받을 정수의 개수를 먼저 선언한 뒤, 정수들을 입력했을 때 최소, 최대값만 나오게 하는 것입니다. 일단 문제를 딱 읽었을 때, 배열과 조건문. 그리고 기준이 될 최대&최소 변수의 선언이 필요해보입니다. #include int main() { int i,count; int max = -1000000; int min = 1000000; scanf("%.. 2022. 2. 22.
[알고리즘] # 0. Big-O / 시간 복잡도(Time Complexity)와 거품 정렬 (Bubble Sort) 알고리즘 공부를 시작하다보면 가장 먼저 마주하는 용어가 '시간 복잡도' 입니다. 이 시간복잡도가 어떤 꼴로 나오냐에 따라 알고리즘의 좋고나쁨을 알 수 있기 때문입니다. 우리 모두 수학을 싫어하는건 알지만 그래프를 하나 보도록 하겠습니다. 너무 잘 나와있어서 설명이 필요없는 그래프긴 하나, 살펴보겠습니다. X축은 Example Scale이라 보시면 되겠습니다. 얼마나 많은 양을 처리해야하는지인데요. Y축을 보면 그 양을 처리하는데 걸리는 시간이 나와있습니다. 더보기 어? 그러면 똑같은 문제의 양이 주어졌어도 푸는데 걸리는 시간이 짧을수록 좋겠네? 맞습니다. 위 그래프에 따르면 지수 함수에 가까워질 때 비효율적이고 로그 함수에 가까워질 때 효율적임을 보입니다. 더보기 그러면 어떤 이유에서 각각의 알고리즘의 .. 2022. 2. 18.
[C언어] # 7. 1차원 배열 & 2차원 배열 (array 함수) / 문자열에 대하여 printf("Welcome, Let's C Language."); // 초등학생도 쉽게 이해시켜주는 C언어 글을 포스팅합니다. 안녕하세요. 비전공자 출신 SW Test 엔지니어 Crush on Study입니다. 이번 글에서는 조건에 따라 다른 화면을 출력시킬 수 있도록 해주는 '조건문'에 대해 배워보겠습니다. Q. 먼저 이전 시간에 배운 내용을 잠깐 복습해봅시다. A. 1) Switch문에 대해 배웠습니다. - Switch문은 트리거를 생성하여 어떤 값을 입력하냐에 따라 다른 결과를 출력할 수 있도록 생성한 문법입니다. if문과 비슷한 개념이지만 여러개의 다중조건을 처리하고자할 때는 Switch문이 코드도 좀 더 깔끔한 느낌입니다. 통상적으로는 if문을 많이 쓰긴하나, switch문도 알아둘 필요가 있.. 2022. 1. 27.