본문 바로가기
반응형

C++146

프로그래머스] C++ 깊이/너비 우선 탐색(DFS/BFS) - 네트워크(level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/43162 1. 문제네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution .. 2020. 9. 10.
프로그래머스] C++ 깊이/너비 우선 탐색(DFS/BFS) - 단어 변환(level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/43163 1. 문제 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> .. 2020. 9. 9.
2편] 멀티 프로세스, 멀티 쓰레드, 멀티 플렉싱에 대해서... 앞전에 동기, 비동기, 블로킹, 논 블로킹에 대해 설명을 했습니다. 이와 이어지는 내용입니다. 예제의 이해를 쉽개 하기 위해서 통신할때를 가정으로 두고 진행하겠습니다. 1. 멀티 프로세스말그대로 프로세스를 여러게 이용하는 것입니다. 클라이언트당 프로세스 하나를 물리는 것이죠. 이런식으로 프로세스를 늘리는 것이죠. 하지만 이런 방식은 굉장히 비효율적입니다. 프로세스 자체는 하나의 프로그램단위로 굉장히 큽니다. 또한 Context switching으로 인해 시스템 저하도 발생하죠. 흔히 알고있는 fork()로 만드는 것이 이 프로세스입니다. 위와 같은 단점때문에 쓰레드라는 개념으로 통신을 하기 시작합니다. 2. 멀티 쓰레드쓰레드는 프로세스보다 작은 단위이며 프로세스 안에서 논리적으로 동작하는 하나의 작업단위.. 2020. 9. 8.
프로그래머스] C++ 연습문제 - 이중우선순위큐(level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42628 1. 문제이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다.명령어수신 탑(높이)I 숫자큐에 주어진 숫자를 삽입합니다.D 1큐에서 최댓값을 삭제합니다.D -1큐에서 최솟값을 삭제합니다.이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요.제한사항operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다.operati.. 2020. 9. 8.
프로그래머스] C++ 연습문제 - 최고의 집합(level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12938 1. 문제자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 집합으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다.각 원소의 합이 S가 되는 수의 집합위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합예를 들어서 자연수 2개로 이루어진 집합 중 합이 9가 되는 집합은 다음과 같이 4개가 있습니다. { 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 } 그중 각 원소의 곱이 최대인 { 4, 5 }가 최고의 집합입니다. 집합의 원소의 개수 n과 모든.. 2020. 9. 7.
1편] 동기와 비동기 블로킹과 논블로킹에 대해서.... 요즘 자료도 많아지고 굉장히 개념 자체가 햇갈립니다. 저도 조사하면서 "내가 배운 내용이 맞나?" 싶을 정도로 햇갈리는 내용들이 많아서 이렇게 정리합니다. 3편으로 나눌 생각이고, 동기, 비동기, 블로킹, 논 블로킹, 멀티 프로세스, 멀티 쓰레드, 멀티 플렉싱, select, poll, epoll, IOCP, boost::asio::context 순으로 진행하려고 합니다. 요번 글은 동기, 비동기, 블로킹, 논 블로킹에 대한 내용입니다. 블로킹과 논 블로킹에 대해 예기하기 앞서, 동기와 비동기에 대해 예기해 보겠습니다. 1. 동기와 비동기??동기와 비동기는 굉장히 다양한 곳에서 쓰입니다. 그리고 뜻하는 정의도 조금씩 다르죠. 하지만 근본적으론 같습니다. 프로그래밍 쪽에서의 동기와 비동기의 차이는 "단일 .. 2020. 9. 7.
C++] template을 헤더파일에 정의하기. (선언만 하면 왜 안될까?) C++ 에는 다른 언어에 있는 template이라는 키워드가 존재합니다. template은 프로그램의 유연성을 제공해주죠. 코드 또한 간결해지고요. C++의 코드를 짜다보면 헤더파일에 클래스, 함수 등을 선언만하고 실제 구현은 다른 cpp파일에 정의하게 됩니다. 즉, 파일을 분리하는 것이죠. 이것의 장점은 코드 관리가 쉬워진다는 점입니다. 단점이 된다면 코드를 보는것이 다소 복잡해 질 수도 있지요. 그럼에도 불구하고 분할 컴파일을 많이하고 있습니다. 기능적인 부분들을 분리해서 정의하는 것이 관리에 있어서, 수정함에 있어서 좋은것은 사실이니 말이죠. 하지만 템플릿은 헤더파일에 선언만 해서는 동작하지 않습니다. 컴파일 시 애러 메시지를 띄워주죠. 예시를 보겠습니다. 1. template을 헤더파일에 선언. .. 2020. 9. 4.
프로그래머스] C++ 연습문제 - 멀리뛰기 (level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12914 1. 문제효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면.. 2020. 9. 2.
프로그래머스] C++ 2020 카카오 인턴십 - 수식 최대화(Level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/67257 1. 문제IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다. 단, 연산자의 우선순위를 새로 정.. 2020. 9. 1.
C++] perfect forwarding 이란?(완벽 전달자) C++에는 템플릿이라는 항목이 있습니다. 템플릿은 타입을 정하지 않은 것으로 코드에 유연성을 제공하게 됩니다. 대표적으로 템플릿이 있는걸 접할 수 있는 라이브러리는 STL의 vector, map, queue 등이 있습니다. 이 템플릿엔 특이한점이 있는데 std::forward가 있다는 것입니다. 우선 템플릿에 대한 기본적인 설명을 해보겠습니다. 기본적인 template 함수 #include template void fnc(T n) { std::cout 2020. 8. 31.
프로그래머스] C++ 연습문제 - 다음 큰 숫자 (level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12911 1. 문제자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.제한 사항n은 1.. 2020. 8. 30.
프로그래머스] C++ 연습문제 - 숫자의 표현(level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12924 1. 문제 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 제한사항 n은 10,000 이하의 자연수 입니다. 입출력.. 2020. 8. 28.
C++] cpprestSDK(Casablanca) 1. http_listener 에 대해서.... http_listener는 task기반으로 만들어진 pplx::로 만들어졌습니다. 따라서 해당 객체를 open() 으로 실행하게 되면 쓰레드가 생성되면서 비동기적으로 실행됩니다. 또한 boost의 asio를 사용하여 만들어졌기 때문에 운영체제마다 제공하는 Thread pool을 사용하며, 사용자는 Thread에 대해 관리를 해주지 않아도 됩니다. 또한 내부적으로 중복생성을 막기위한 코드가 존재하며 예외처리를 합니다. 사용자는 support() 함수를 이용해 코드를 간편하게 만들면 됩니다. 1. http_listener 사용법해당 클래스는 namespace web::http::experimental::listener 에 정의되어 있습니다. 따라서 사용하기 편하게 하실려면 using namespace web.. 2020. 7. 2.
C++] cpprestSDK 에 대한 간략한 설명. 해당 SDK는 microsoft에서 진행하고있는 오픈소스 프로젝트 Casablanca입니다. 현재 업데이트가 뜸~ 하지만 꾸준히 진행되고 있습니다. 지금부터 특징에 대해 설명해드리겠습니다. 1. cpprestSDK의 특징해당 라이브러리는 boost, openSSL 라이브러리를 커스터마이징해 좀 더 사용자가 사용하기 편리하게 제작했으며,cpp의 ppl라이브러리인 task를 기반으로 만든 pplx로 이루어져 있습니다. boost의 asio를 사용해 비동기식 입.출력을 효율적으로 가능하게 했으며 Thread pool을 사용합니다.Thread pool은 운영체제에서 제공해주는 Thread pool을 사용하게 됩니다.(Win : IOCP, Linux : epoll, Mac : kqueue) task 라이브러리의 .. 2020. 7. 2.
CodeUp]C++ 3017 : 정렬 기준 해당 문제는 https://codeup.kr/problem.php?id=3017 에서 풀 수 있습니다.해당 문제의 저작권은 Codeup에게 있습니다. 문제 분류 : 보기문제 설명 내 문제집에 추가 내소스1학생의 번호와 수학, 정보 점수를 가진 데이터가 있다.우리는 이를 정렬하려고 한다.정렬 기준은 수학점수가 높은 순으로 정렬하되, 수학점수가 같으면 정보점수가 높은 순, 정보점수도 같으면 번호가 빠른 순서로 정렬하려고 한다.입력첫째 줄에 학생수 n(번호:1~n)가 입력된다. (1 2020. 6. 27.
반응형

스킨편집 -> html 편집에서