본문 바로가기

삼성전자 알고리즘

(65)
4. 자료형의 크기 및 범위 32비트 기준 자료형 크기. 다른 OS(16비트나 64비트)나 컴파일러에서는 자료형의 크기가 다를 수 있음. 구분자료형크기범위 (http://myblog.opendocs.co.kr/archives/1230 참조) 기본형 void – – 문자형 (signed) char 1 byte -128 ~ 127 unsigned char 1 byte 0 ~ 255 wchar_t 2 byte 0 ~ 65,535 정수형 bool 1 byte 0 ~ 1 (signed) short (int) 2 byte -32,768 ~ 32,767 unsigned short (int) 4 byte 0 ~ 65,535 (signed) int 4 byte -2,147,483,648 ~ 2,147,483,647 unsigned int 4 byt..
3. malloc, new 써야할까 malloc과 new를 쓰는 이유 : 동적할당을 위해 번외) 동적할당이란 ? C언어 : malloc / free 1. #include 2. Heap Memory에 할당 3. 사용 방법 : int *p; //정수형 포인터 변수 p 선언 p - (int *)malloc(sizeof(int)); 4. 메모리 해제 필요 : free(p); C++ : new / delete 1. C++에서는 키워드로 제공됨. (헤더 선언 필요 없음) 2. Heap Memory에 할당 3. 사용 방법 : (https://boycoding.tistory.com/204 참조) int *ptr = new int; //dynamically allocate an integer and assig the address to ptr so we ..
3. C++ 구조체와 클래스 차이 알고리즘 대회에서 구조체와 클래스 중 무엇을 사용할까? 답은 구조체 1. 클래스의 접근제어 지시자를 구조체는 신경 쓸 필요 없다. 2. 구조체는 따로 선언하지 않는다면 모든 변수와 함수는 public으로 선언 됨. 3. 반면 class는 접근제어 지시자를 선언하지 않는다면 모든 변수와 함수는 private로 선언 됨. C와 C++의 구조체는 다른 데이터 구조이고 C++에서 class와 struct는 default 접근제어 지시자만 다르고 그 외의 기능은 동일. - 편한거 쓰자_그냥 구조체 쓰자. 구조체 ex) struct foo{ int a, b; foo() : a(0), b(0) { cout
2. 비주얼스튜디오 디버깅 중단점 단축키 : F9 디버깅 단축키 : F5 중단점 이후의 코드를 한 줄씩 실행하고 싶다면 : F11 프로시저 단위 실행 : F10 함수를 제외하고 다음 줄 실행 : shift + F11
1. 비주얼스튜디오 단축키 모음 새 프로젝트 생성 ctrl + shift + N 새 파일 (.h 혹은 .cpp) 만들기 프로젝트 창 : ctrl + shift + A 자동 인덴트(indent) ctrl + K, ctrl + D : 파일 전체의 인덴트 조정 ctrl + K, ctrl + F : 선택 범위의 인덴트 조정 주석 ctrl + K, ctrl + C : 선택 범위의 주석화 ctrl + K, ctrl + U : 선택 범위의 주석 해제 한 라인 삭제 ctrl + shift + L 문자열 찾아 바꾸기 (Replace) ctrl + H 솔루션 탐색기 열기 ctrl + alt + L 줄 옮기기 alt + 화살표(위(↑), 아래(↓)) 특정 변수나 함수 정의된 부분 찾아가기 변수나 함수 선택 후 F12 코드 개요 확장 / 축소 ctrl + ..
0. 로드맵 1. Ad Hoc Algorithms 1-1. Anagram 찾기 1-2. 정렬된 두 배열에서 특정한 합을 만드는 두 수 찾기 1-3. 정렬된 두 배열을 Merge 했을 때 K 번째 값 찾기 1-4. GAP 문제 (APIO 2016) 1-5. 달리기 (KOI 2013) 1-6. 연결 리스트에서 Cycle 찾기 1-7. 혼자인 값 찾기 1-8. 최대 Subarray 찾기 1-9. Game (IOI 2014) 1-10. Ad Hoc Algorithms - PDF 1-11. 1일차 - 그래도 수명이 절반이 되어서는..... 1-12. 1일차 - 평등주의 1-13. 1일차 - 아나그램 1-14. 1일차 - 최대 부분 배열 2. 증명의 중요성 2-1. 인접한 값을 Delete 하면서 Insert 2-2. 임의의 ..
2. 링크드 리스트 [Linked List] Why? 1. 노드의 중간지점에서도 자료의 추가와 삭제가 O(1)의 시간에 가능하다는 장점이 있기 때문. How? 1. 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당 2. 링크드 리스트의 종류 2-1. 단일 연결 리스트 #include using namespace std; //Linked List //https://hojak99.tistory.com/274 class Node{ public : Node *nextNode = nullptr; int data; }; class Link { public : Node *head = new Node(); void insert(Link *linkedList, int data); void printList(Link *linkedList); }; void Lin..
1. 해싱 [Hashing] Why ? 1.하나의 문자열을 보다 빨리 찾을 수 있도록 사용. How? 1.인덱스에 직접 접근할 수 있는 짧은 길이의 값이나 키로 변환. 2.다양한 구현 기법 존재. 2-1. 나눗셈 방법 (The division method) : h(k) = k mod m 2-1-a. m = 2^p인 경우는 피하는 것이 좋다. 2-1-b. m= 2^p - 1 인 경우도 피하는 것이 좋다. 2-1-c. 2^p에 너무 가깝지 않은 소수를 선택하는 것이 좋다. ex) 키의 수가 2,000 일 때 해쉬 테이블의 크기를 m = 701로 잡으면 좋다. (amortized analysis에 의해 3으로 나누는 것이 효율적이라 고 밝혀짐. 출처 : Tacademy_10강 컴퓨터 알고리즘 기초 10강 해쉬 알고리즘(1) | T아카데미..