본문 바로가기
반응형

C++146

C++] RAII란? 1. RAII란?RAII는 Resource acquisition is initialization의 약자로 직여해보면 "자원 흭득을 초기화한다."라고 해석이 됩니다. 즉, "흭득된 자원을 초기화 한다."라고 생각하시면 됩니다. 그럼 RAII는 뭐냐? 키워드냐? 클래스냐? 함수냐?? RAII는 C++설계 패턴중 하나인 키워드입니다. 이러이러한 식의 설계를 RAII라고 부르자고 된것입니다. 그럼 여기서 말하는 이러이러한 식의 설계는 무엇일까? 동적인 프로그래밍을 위해 new라는 키워드를 사용해 힙 메모리에서 메모리를 할당받습니다. 할당 받는순간 해당 메모리의 resource를 프로그래머는 직접 관리하게 됩니다. 해당 메모리 공간을 잘 활용한다면 정말 좋겠지만, 요놈의 실수, 예기치 못한 exception등.... 2020. 6. 13.
프로그래머스] C++ 연습문제 - JadenCase 문자열 만들기(level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12951 1.문제 2. 조건1. 주어지는 문장에는 숫자, 소문자, 대문자, 스페이스가 들어있습니다.2. 문장의 앞단어가 알파벳일 경우 무조건 대문자로 바뀌어야 합니다.3. 스페이스바를 기준으로 앞 단어는 대문자로 되어야하고 나머지는 소문자여야 합니다. 3. 풀이저는 처음 시작던어에 toupper()함수를 통해 대문자로 만들어주고 진행했습니다.그리고 스페이스바를 만났을 때 다음 단어를 대문자로 바꿔줬습니다.여기서 주의해야할 점은 스페이스바가 연속으로 나올 경우입니다.따라서 저는 flag라는 bool변수를 통해 연달아 나.. 2020. 6. 12.
프로그래머스] C++ 연습문제 - 124 나라의 숫자(level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다.아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12899 1. 문제124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.124 나라에는 자연수만 존재합니다.124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.10진법124 나라10진법124 나라1161422721348224119245121041자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.제한.. 2020. 6. 12.
프로그래머스] C++ Summer/Winter Coding(~2018) - 영어 끝말잇기(level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12981 1.문제1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.이전에 등장했던 단어는 사용할 수 없습니다.한 글자인 단어는 인정되지 않습니다.다음은 3명이 끝말잇기를 하는 상황을 나타냅니다.tank → kick → know → wheel → land → dr.. 2020. 6. 12.
프로그래머스] C++ 2017팁스타운 - 예상 대진표(level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12985 1. 문제△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는.. 2020. 6. 12.
프로그래머스] C++ 연습문제 - 땅따먹기(level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12913 1. 문제땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행.. 2020. 6. 12.
프로그래머스] C++ 탐욕법(Greedy) - 단속카매라(level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42884 1. 문제고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요.제한사항차량의 대수는 1대 이상 10,000대 이하입니다.routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점.. 2020. 6. 12.
프로그래머스] C++ 탐욕법(Greedy) - 구명보트(level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다.아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42885 1. 문제 설명무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다.예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다.구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다.사람들의 몸무게를 .. 2020. 6. 12.
C++ std::async 사용방법. 1. std::async에 대한 간단한 설명.std::async는 std::task 클래스 기반으로 만들어진 클래스로 Thread를 만들 때 사용됩니다.std::async는 std::thread와 달리 내부적으로 Thread Pool을 만들어 Thread를 관리하게 되며,예외처리, 값 return 등.... std::thread보다 안정적이며 프로그래머가 사용하기 편리한 기능입니다.std::async는 반환 값을 std::future로 받습니다. 2. std::async constructor#include #include void for_print(char c) { for (int i = 0; i 2020. 6. 10.
C++ thread와 async의 차이점 C++에서 병렬처리를 하기위해 여러가지 클래스를 제공합니다. C++에선 std::thread, std::future, std::async를 제공합니다. 그 중 많이 쓰이는 std::thread와 std::async에 대해 설명해볼까 합니다. 1. C++에서 Thread와 Async는 다른녀석인가? 둘다 같은 쓰레드입니다. 많이 햇갈리는게 Thread라는 개념이 있고, 각 언어별로 Thread를 사용하기위해 프로그래밍 내에 정의된 함수 혹은 객체를 불러옵니다. 해당 Thread를 불러오는 방법은 여러가지일 수 있습니다. JAVA의 interface인 run, 클래스 Thread, C언어의 pthread, C++의 thread, async, task 등.... 전부 다 Thread입니다. 특별한게 없습니다... 2020. 6. 9.
C++ 파일 입출력(ofstream, ifstream) Window전용 C++에서 파일 입출력할 때 쓰이는 ofstream과 ifstream에 대해 알아보도록 하겠습니다.(Windows) ofstream(output으로 write할 때 쓰임) : http://www.cplusplus.com/reference/fstream/ofstream/ ifstream(input으로 read할 때 쓰임) : http://www.cplusplus.com/reference/fstream/ifstream/ 사용법#include #include #include #include #include using namespace std; string text = "In 1979, Bjarne Stroustrup, a Danish computer scientist, began work on \"C with.. 2020. 6. 4.
C++] 스마트 포인터에 대하여... 스마트 포인터란?? 기본적으로 포인터라고 하면 *ptr을 떠올리게 됩니다. 그리고 주소 값을 해당 포인터 변수에 넣어주죠. int *ptr = # 이런식으로요.... 하지만 포인터가 new로 생성된 변수... 즉, Heap메모리에 할당된 주소 값을 가르키게 될 때 프로그래머의 실수로 Memory leak이 발생할 수 있습니다. delete를 안해서 말이죠...... 스마트 포인터를 사용하게 된다면 해당 걱정은 없어지게 됩니다. Stack에 선언된 스마트 포인터가 pop이 된다면..... 즉, {} 함수가 끝나게 된다면 Heap에 할당된 메모리는 자동적으로 초기화 시켜줍니다. C++에서 스마트 포인터는 3가지가 있습니다. 1. unique_ptr 2. shared_ptr 3. weak_ptr 그럼 .. 2020. 5. 31.
프로그래머스] C++ 이분탐색 - 예산(Level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/43237 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것입니다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있습니다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정합니다. 1. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정합니다. 2. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정합니다. 상한액 이하의 예산요청에 대해서는 요청한 .. 2020. 5. 24.
gcc/g++ 분할 파일 컴파일 하기. C언어. 1. 함수 등록. 123456789101112// test.c #include int add(int a, int b); int main(){ printf("%d\n", add(1, 2)); return 0;} cs 123456// add.c int add(int a, int b){ return a + b;} cs 명령어. $ gcc test.c add.c (오브젝트 파일 과정과 실행파일 지정 생략 가능) 2. 헤더 파일선언 1234567891011// add.h #ifndef _ADD_H_#define _ADD_H_ #include int add(int a, int b); #endif cs 123456// add.c int add(int a, int b){ return a + b;} cs 123.. 2020. 5. 17.
프로그래머스] C++ 2018 KAKAO BLIND RECRUITMENT - 프렌즈 4블록(Level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/17679 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록 . 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다. 만약 판이 위와 같이 주어질 경우, 라이언이 2×2로 배치된 7개 블록과 콘이 2×2로 배치된 4개 블록이 지워진다. 같은 블록은 여러 2×2에 포함될 수 있으며, 지워지는 조건에 만족하는 2×2 모양이 여러 개 있다면 한꺼번에 지워진다. 블록이 지워진 후에 위에 있는 블록이.. 2020. 5. 9.
728x90
반응형

스킨편집 -> html 편집에서