끄적끄적 코딩
article thumbnail
배열(Array), 리스트(List)
자료구조 2021. 5. 3. 22:59

배열이란 같은 자료형을 가진 변수를 하나로 묶어서 사용함 int arr[10]; // 타입 변수명[크기]; int arr[3] = {1, 3, 5}; cout

동적 메모리 할당, malloc, calloc, realloc
자료구조 2021. 5. 3. 22:38

정적 메모리 할당 int arr[100]; 위와 같이 메모리를 정적으로 할당할 수 있습니다. 처음 프로그램을 만들었을 때 100칸의 배열로 유저들을 수용하려고 했습니다. 근데 100명이상의 유저들이 들어온다면 프로그램을 수정해서 200으로 변경해서 해결할 수도 있습니다. 하지만 또 300명 400명으로 된다면 매번 변경해야하며, 변경하는것이 번거로워서 1000, 10000으로 공간을 많이 만들어 놓을 수도 있습니다. 이때 200명의 사람들만 이용중이라면 공간(메모리)가 낭비될 수 있습니다. 이럴 때 동적으로 메모리를 할당할 수 있습니다. #include #include int main() { int size; scanf("%d", &size); int *arr=malloc(sizeof(int)*size)..

구조체, typedef
자료구조 2021. 5. 3. 22:07

구조체란 타입이 다른 데이터를 하나로 묶는 방법 #include struct student { int age; char name[10]; char gender; }; int main() { struct student s1 = {14, "LJS", 'M'}; struct student s2 = {12, "KML", 'W'}; printf("%d %s, %c\n", s1.age, s1.name, s1.gender); printf("%d %s, %c\n", s2.age, s2.name, s2.gender); return 0; } // 14 LJS, M // 12 KML, W 구조체는 다음의 모양으로 만들 수 있습니다. struct 구조체명 { 변수1 변수2 .... }; 사용할 때는 다음과 같이 사용 할 수 ..

article thumbnail
포인터, 이중 포인터, Call by value, Call by reference
자료구조 2021. 5. 3. 21:46

포인터란 메모리의 주소값을 저장하는 변수 *역참조 : 포인터가 가르키는 값을 가져오는것 이중 포인터란 포인터 변수의 주소를 저장하는 변수 int n = 100; // 변수의 선언 int *p = &n; // 포인터의 선언 int a = 10; int *b = &a; int **c = &b; printf("%d\n", a); // 10 printf("%p\n", &a); // 0x20 printf("%p\n", b); // 0x20 printf("%p\n", &b); // 0x24 printf("%d\n", *b); // 10 printf("%p\n", c); // 0x24 printf("%p\n", &c); // 0x28 printf("%p\n", *c); // 0x20 printf("%d\n", **c..

article thumbnail
시간 복잡도, 공간 복잡도
자료구조 2021. 5. 3. 17:47

시간 복잡도란(Time complexity)? 특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간 시간 복잡도는 주로 빅오 표기법을 사용 최선, 평균, 최악으로 나누어서 표기함 최선 : 실행 시간이 가장 빠른 경우 평균 : 평균 수행 시간 최악 : 실행 시간이 가장 느릴 경우 ex) 퀵정렬의 경우 최선, 평균 시간복잡도는 O(nlogn)이며, 최악 시간복잡도는 O(n²) 빅오 표기법 알고리즘의 효율을 분석하고 비교하는데 쓰이는 개념 최악의 경우를 고려하여 쓰여짐 상한 점근 표기법 계수와 낮은 항을 제외시킴 ex) 3n² + 2n -1 => O(n²) ex) 3n => O(n) ex) 10 => O(1) 공간 복잡도란(Space complexity)? 프로그램을 실행시킨 후 완료하는 데 필요로 하는 자원 ..

article thumbnail
[C++] 프로그래머스 - 비밀지도
알고리즘 2021. 4. 30. 18:55

2018 KAKAO BLIND RECRUITMENT (2018 카카오 블라인드 채용 문제) 비트 연산자를 활용하여 문제를 해결하였습니다. 주어지는 2개의 배열을 &연산으로 합칩니다. 그리고 &연산을 통해서 벽이 있는지 확인합니다. ex) 10 (n = 5) "01010" 01010 & 10000 => 0 01010 & 01000 => 1 01010 & 00100 => 0 01010 & 00010 => 1 01010 & 00001 => 0 0인 경우에 string에 " "을 삽입 1인 경우에 string에 "#"을 삽입 #include #include #include using namespace std; vector solution(int n, vector arr1, vector arr2) { int bi..

article thumbnail
[C++] 프로그래머스 - 메뉴 리뉴얼
알고리즘 2021. 4. 17. 09:40

2021 KAKAO BLIND RECRUITMENT (2021 카카오 블라인드 채용 문제) course에 주어진 개수만큼의 길이인 메뉴를 만드는 문제입니다. course = {2, 3, 4} => 2개, 3개, 4개의 메뉴를 만들어야합니다. 1. 메뉴는 2사람이상이 주문한 메뉴 2. 같은 길이인 경우 가장 많은 사람들이 주문한 메뉴 3. 같은 길이이면서 사람수도 동일한 경우 전부 메뉴로 만듦 4. 메뉴는 알파벳 순으로 정렬 5. 결과 배열은 알파벳 순으로 정렬 코드 흐름 1. 입력받은 메뉴를 알파벳순으로 정렬합니다. (WX, XW를 비교하기 어려움) 2. 주문 받은 배열의 코스개수에 조건에 맞는 조합과 조합의 수를 추출 3. 추출된 값들을 개수를 기준으로 내림차순 정렬 4. 개수가 2개 이상이면서, 동일..

article thumbnail
[C++] 프로그래머스 - 신규 아이디 추천
알고리즘 2021. 4. 15. 19:19

2021 KAKAO BLIND RECRUITMENT (2021 카카오 블라인드 채용 문제) 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치..

검색 태그