본문 바로가기
반응형

목록363

[C++ 풀이] Codility - Lessons 6, (Sorting) Distinct 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제. 설명 배열 A가 주어집니다. 배열의 길이는 0 ~ 100,000 까지 있을 수 있습니다. 배열의 요소는 값 범위는 -1,000,000 ~ 1,000,000 입니다. 배열 A의 요소들 중 중복값을 제외한 정수가 몇 개가 있는지 반환하면 되는 문제입니다. 위 예제에서는 1, 2 ,3 총 3개가 있으니 3을 return하면 됩니다. 결과 // you can use includes, for example: #include // you can write to stdout for debugging purposes, e.g. // cout 2019. 8. 18.
Linux] tar 정의 및 사용방법 tar이라는 녀석은 Unix, Linux의 명령어 입니다.이녀석의 주 역할은 여러개의 파일을 하나로 묶는 역할을 합니다.(압축이 아닙니다.) 탄생배경은 1979년 AT&T 벨 연구소에서 만들었으며 마그네틱 테이프(자기 테이프)에 파일을 저장하기 위해 만들어 졌습니다.그리고 요즘은 주로 백업, 관리, 배포 등의 목적으로 사용됩니다.때문에 Tape archive의 준말로 tar이 되었으며 tarball이라고도 불립니다. 위 사진은 test.c, test_2.c, test_3.c 파일 3개를 test.tar로 묶은 결과입니다.보시면 test.tar의 크기가 더 커진걸 알 수 있습니다. 그 이유는 tar로 파일을 묶게되면 각 파일마다 헤더가 붙게 됩니다.각 해더는 512블록으로 이뤄져 있으며 filed offs.. 2019. 8. 18.
[C++ 풀이] Codility - Lessons 6, (Sorting) MaxProductOfThree 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제. 설명 배열 A가 주어 집니다. 배열 A의 요소에는 -1,000 ~ 1,000의 정수가 있습니다. 배열 A의 요소중 3개를 곱했을 때 가장 큰 수를 return하는 문제입니다. 주의해야할 점은 총 3가지 입니다. 1. 모두 음수일 경우. 2. 음수 * 음수 = 양수 의 값이 양수 * 양수보다 클 경우. 3. 음수 * 음수의 곱이 양수 * 양수 의 곱보다 작을 경우. 애초에 Codility의 Lessons부분이 Sorting으로 되어 있는데..... 저는 그냥 무식한 방법으로 풀었습니다. ㅡㅡ. 결과 // you can use includes, for example: // #inclu.. 2019. 8. 9.
[C++ 풀이] Codility - Lessons 5, (Prefix Sums) CountDiv 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제. 설명 정수 A ~ B까지의 범위에서 K로 나눴을 때 나머지가 0인 정수의 갯수를 구하시오. 예를들어 A = 6, B = 11, K = 3이라고 가정했을 때 return값은 3입니다. 6, 8, 10 이므로..... 너무나도 쉬운문제였습니다. ^^ 앞선 3개 문제는 정말 어려웠는데 말이죠.....;; 결과 // you can use includes, for example: // #include // you can write to stdout for debugging purposes, e.g. // cout 2019. 8. 8.
Embedded] MCU와 SoC의 개념과 차이점은? Embedded System을 공부하다보면 자주 등장하는 용어 입니다. 쉽게 설명하자면 MCU는 작은 단위, SoC는 큰 단위로 생각하시면 됩니다. MCU는 Micro Controller Unit의 약자로 CPU, 메모리, 입출력 제어(I/O), 주변장치 컨트로러를 하나의 칩에 넣은 반도체 입니다. 즉 Chip하나에 거의 모든 기능이 포함되어 있다고 볼 수 있죠. 대표적인 사용예로는 아두이노가 있습니다. 위 사진에서 빨간색으로 네모친 부분이 아두이노의 MCU입니다. 아시는 분들은 아시겠지만 저 칩셋에는 입출력 포트, 전원, GND포트, 송수신 포트 등이 있습니다. 칩셋 하나에 말이죠. 그럼 SoC를 살펴보겠습니다. SoC는 System on Chip의 약자로 하나의 칩으로 시스템 운영이 가능하다는 뜻입니.. 2019. 8. 8.
Embeded] ARM이란? ARM은 (Advanced RISC Machine)의 약자로 CPU 디자인중 하나를 뜻하는 말입니다. 대표적으로 스마트폰에 들어가는 CPU는 요녀석이 들어가게 되는것이죠. CPU종류마다 명령어 세트(instruction set)라는 녀석이 같이 존재하게 됩니다. 이 명령어 세트로 인해서 CPU가 여러가지 명령어를 처리할 수 있는 것이죠. 인텔의 CPU 경우엔 x86, x64(AMD64)와 같은 명령어 세트가 들어가게 되고, ARM같은 경우는 RISC가 들어가게 됩니다. RISC는 CISC와 비교가 되는데, 이는 CISC의 단점부분을 보완하여 나온 명령어 세트가 RISC라서 그렇습니다. ARM은 가장큰 특징이 저전력에 고성능이라는 점입니다. CPU는 전력이 높을수록 코어당 쿨럭이 높아집니다. 때문에 고성능.. 2019. 8. 8.
[C++ 풀이] Codility - Lessons 5, (Prefix Sums) MinAvgTwoSlice 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제. 설명 대충 설명하자면 이렇습니다. 1. 정수가 저장된 N개의 배열을 준다. 2. N개의 배열에는 임의의 정수가 있으며 범위는 -10,000 ~ 10,000이다. 3. 이 배열 요소 중 2개 이상의 합의 평균 값 중 가장 작은 평균 값이 시작되는 index 번호를 구하라!! 예를 들어 A [0] = 4 A [1] = 2 A [2] = 2 A [3] = 5 A [4] = 1 A [5] = 5 A [6] = 8 이 있다고 가정할 때 가장 작은 평균 값은 A[1] + A[2] 입니다. 이 때 시작하는 index값인 1을 반환해 줘야 합니다. 다른 예를 들어보겠습니다. A [0] = 4 A.. 2019. 8. 4.
[C++ 풀이] Codility - Lessons 5, (Prefix Sums) GenomicRangeQuery 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제. 설명 N 길이만큼의 랜덤한 문자열이 주어 집니다. (N의 크기는 1 ~ 100,000) 문자열의 구성은 A, C, G, T 이렇게 4가지 입니다. 중간에 스페이스바는 없으며 위 4개의 알파벳 조합의 문자열이 주어집니다. 알파벳은 다음과 같은 점수를 갖고 있습니다. A = 1, C = 2, G = 3, T = 4 위 문제는 주어진 범위 내에 4가지 알파벳으로 구성된 문자열 중 점수가 가장 작은 알파벳을 찾아내는 문제 입니다. 범위는 P와 Q로 주어 집니다. P와 Q 범위는 1 ~ 50,000이며(P[0] ~ P[49999]) 각 요소의 값은 0 ~ N-1 까지 있을 수 있습니다. P.. 2019. 8. 1.
C++ for_each문 개념과 사용법 설명 C++에는 기본 문법인 for문이 있습니다. for문으로 모든 반복문을 만들 수 있고 실행시킬 수 있습니다. 하지만 단순 for문으로 만들기엔 귀찮거나 손이 많이가는 반복문을 만들 수 밖에 없는 상황이 종종 존재합니다. 한가지 예시를 들겠습니다. #include #include #include using namespace std; void print_fnc(int n) { cout 2019. 8. 1.
C++ 함수 포인터란? 왜 사용할까? C와 C++에서는 포인터라는 중요한 요소가 존재합니다. 그리고 포인터를 많이 활용하죠. 그 이유는 주소 값을 대입해 해당 위치로 이동하거나 접근이 가능하기 때문입니다. 함수 또한 그 주소 값을 갖고 호출이 되면 해당 주소 값으로 이동해 프로그램을 실행하게 됩니다. 함수 포인터란 함수의 주소 값을 지닐 수 있는 포인터 변수 입니다. 선언 방법은 다음과 같죠. int (*fp1)(); int (*fp2)(int); int (*fp3)(int, int); bool (*fp4)(); void (*fp5)(); 위와 같은 형식으로 정의할 수 있습니다. 반환 타입은 말 그대로 함수의 반환 타입. 변수 이름은 함수를 저장할 수 있는 변수의 이름 ※앞에 *이 붙었는데 이는 포인터 변수이기 떄문입니다. 설명을 덪붙이자면.. 2019. 7. 20.
c++ 함수 객채란?? C++에서는 객체를(클래스) 함수처럼 사용이 가능합니다. 설명하기에 앞서 연산자 오버라이딩 개념을 알아야 합니다. 연산자 오버라이딩1(클릭) 연산자 오버라이딩2(클릭) 이 함수 객체를 왜!!!! 사용하는지 알아보기에 앞서서 우선 예제를 보겠습니다. #include using namespace std; class Plus{ public: Plus(){ num = 0; } int operator()(){ num++; return num; } int operator()(int n){ num = ++n; return num; } friend ostream& operator 2019. 7. 18.
C++ inline 함수란? inline 함수는 C++의 실행 속도 개선을 위해 등장 했습니다. C++에서는 기본적으로 클래스 선언을 통한 맴버함수가 많이 이용되는데, 이러한 경우 보통 간단한 기능을 하는 함수들이 많이 만들어지게 됩니다. 생성자, getter(), setter(), print() 등 과같은 간단한 함수들 말이죠. 함수들이 간결하여 실행속도에 영향을 끼지지 않을 것 같지만 함수 호출 과정에서 프로그램 속도가 떨어지게 됩니다. 함수의 호출은 다음과 같이 진행됩니다. ※찾아보니 중간에 레지스터에도 값이 저장되는데 어떤 값이 무슨 이유로 저장되는지는 저도 잘 몰라서 일단 제외했습니다. 코드로 보면 다음과 같습니다. #include int fnc_1(int a, int b){ //매개변수 스택에 저장 return a + b.. 2019. 7. 13.
C++ Lambda 사용 이유와 사용 방법 C++에는 lambda라는 문법이 존제합니다. 원래 이 lambda는 boost라는 라이브러리에서 제공하는 함수였지만 지금은 modern c++로 넘어가면서 이 기능을 기본적으로 지원하게 되었습니다. (현재 modern c++은 C++ 20 까지 나왔습니다.) 출처 : https://modoocode.com/196 ● [] 캡쳐 블록 (사용시 외부 변수를 캡쳐해 람다 몸통에서 사용 가능) ● () 전달 인자 ● -> 반환 타입 ● {} 함수 몸통 (※Lambda는 기본적으로 캡쳐 블록'[]', 전달인자 '()', return type을 생략할 수 있습니다.) 참...... 어려워 보이고 이런 기능이 왜 있는지 감이 안잡히고... 고통 스럽습니다..... 우선!! 이 lambda 라는 문법이 왜 필요한지 .. 2019. 7. 1.
C++ 변수 형 타입 auto C++로 변수를 선언할 때 보통 자료형을 선언해 줍니다. int a = 10; double b = 5.12; char c[] = "hello"; 이런식으로 말이죠. 하지만 요즘 개정된 modern c++이나 boost 를 사용 할 시 다음 키워드를 사용할 수 있습니다. 바로 auto 이죠. auto 키워드는 따로 자료형을 지정해 주지 않아도 '변수 초기 값'에 따라 자동으로 자료형 타입이 결정됩니다. int main(void) { auto a1 = 10; auto a2 = 5.41; auto s = "hello"; cout 2019. 7. 1.
C++로 Restful서버 만들기(casablanca) 2. Server Sample Code 이번엔 GET을 통해 서버로부터 간단한 메시지를 얻어오는 TEST를 해보겠습니다. 우선 아래는 Sample Code 입니다. #include #include using namespace std; using namespace web::http; using namespace web::http::experimental::listener; int main(){ http_listener listener(U("http://localhost:9090")); //Server URL, Port 지정. listener.open().then([&listener](){cout 2019. 5. 28.
728x90
반응형

스킨편집 -> html 편집에서