본문 바로가기
반응형

목록364

C++ set 사용법과 설명... set에 대해 설명하고자 합니다. 사용법도요. 아마 set을 사용하려고 검색하셔서 오시게 된 분이시라면, set의 특징을 잘 아시는 분일겁니다. 네, set의 특징은 다음과 같습니다. 1. 숫자든 문자든 중복을 없엔다. 2. 삽입하는 순서에 상관없이 정렬되서 입력이 된다. 이 특징을 모두 만족시킬 수 있는 자료구조는 이진 트리 입니다. 즉, set은 벨런스 트리로 Red-Black 트리로 만들어져 있습니다. 이런식으로 말이죠... 이진트리 특성상 삽입과 삭제가 용이합니다. 자료 찾는것도 준수하고요. 그럼 사용법을 알아보겠습니다. Set의 초기화 set 변수 기본적인 선언방법 set 변수(복사할 변수) 선언 후 복사한 값으로 초기화 set 변수 = 복사할 변수 서언 후 복사한 값으로 초기화 #include.. 2019. 12. 13.
2020 카카오 블라인드 공채 문제 2번 설명 및 풀기 문제 풀러가기 완성된 코드 #include #include #include using namespace std; int index; bool check(const string& p){ int left = 0, right = 0; bool ret = true; stack s; for(int i = 0; i < p.size(); i++){ if(p[i] == '('){ left++; s.push('('); }else{ if(s.empty()) ret = false; else s.pop(); right++; } if(left == right){ index = i + 1; return ret; } } return ret; } string solution(string p) { if(p == "") return ".. 2019. 12. 11.
유니코드와 아스키코드(SBCS, MBCS, WBCS) 원래 코드를 짜면 일반적으로 영문, 숫자를 아스키코드로 컴퓨터는 인식합니다. 따라서 123char c = 65; printf("%c", c); //output : Acs 이런식으로 가능합니다. 이는 아스키코드를 사용해 문자든 숫자든 1바이트로 표현하기 때문인데, 1바이트는 8비트로0 ~ 256까지의 가지수를 표현할 수 있습니다. 하지만 아스키코드는 7비트만 사용합니다. 그 이유는 맨 앞의 1비트는 에러검출을 위해 사용하기 때문이죠. 이렇게 말이죠.... 하지만 시대가 발전하면서 다른 여러 나라들(한국, 일본, 중국, 아랍, 인도 등....)도 컴퓨터를 많이 사용하기 시작했고 그로인해 다른나라의 언어도 표현해야 했습니다. 하지만 1바이트로 문자를 표현하는 것은 자리가 없어서 2바이트로 표현하기로 합니다. .. 2019. 12. 11.
이코노미스트 2019-12-06 / 세르게이 브린과 래리 페이지가 떠난다면 누가 알파벳을 제어 하는가? 출처 : https://www.economist.com/leaders/2019/12/05/who-will-control-alphabet-once-sergey-brin-and-larry-page-are-gone# Who will control Alphabet once Sergey Brin and Larry Page are gone?세르게이 브린과 래리 페이지가 떠난다면 누가 알파벳(구글 상위 기업)을 제어하는가? “Yeah, ok, why not? I’ll just give it a try.”그래, 좋아, 왜 안되? 시도해볼게. With those words Sergey Brin abandoned academia and poured his energy into Google,그말과 함께 세르게이 브린은 학계.. 2019. 12. 11.
CPU와 메모리 사이의 동작 일반적으로 윈도우에서 프로그램을 실행시키면(.exe) 프로그램은 잘 실행됩니다. 이 프로그램 단위를 컴퓨터 용어로 프로세스(process)라고 합니다. 이 프로그램이 실행되면 주기억장치인 RAM에 올라가는 것이 아니라 가상메모리로 올라가게 됩니다. 이 부분은 여기!에 잘 설명해 놨으니 참고하시길 바랍니다. 그럼 CPU와 RAM 사이에서 데이터를 주고 받으면서 프로그램이 잘 동작하게 됩니다. 여기서 좀 더 자세히 들여다보면 CPU와 RAM 사이를 연결해주는 통로를 버스(BUS)라고 하며, CPU도 ALU, Control Unit, Register Set, Bus interface로 나눌 수 있습니다. 그렇다면!! CPU는 RAM에서 데이터를 가져와 어떻게 처리하는지 살펴보겠습니다. 1. ALU(Arithm.. 2019. 12. 10.
[C++ 풀이] Codility - Lessons 9 (Maximum slice problem), MaxDoubleSliceSum 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제 설명 더블 슬라이스라는 키워드를 문제에서 정의 합니다. 더블 슬라이스는 (X, Y, Z)로 구성되며 X < Y Y < Z 로 값의 조건이 주어 집니다. A배열의 index중 Y값을 기준으로 왼쪽과 오른쪽으로 나눕니다. Y값은 변경될 수 있으며 X와 Z의 기준도 변경될 수 있습니다. 이 과정에서 X ~ Y값중 최대 합과 Y ~ Z값 중 최대 합을 구한 후 이 최대합끼리 더했을 때 가장 높은 수를 구하는 문제입니다. 그리고 배열의 맨 앞과 맨 끝 값은 제외하며 X,Y,Z가 붙어있을 경우(slice(3,4,5)) 0으로 처리합니다. 결과 // you can use includes, for.. 2019. 12. 10.
C++ 이진탐색 구현하기(재귀) 이진탐색이란? 정렬되어 있는 배열의 수를 효율으로 빠르게 찾는 방법입니다. 실생활에서 쓰일 수 있는 예로는...... 술게임의 업다운이 있습니다. 물론 해당 숫자를 찾을 때, 50, 25, 17.... 이런식으로 진행하면 안되지만..... 떠오르는 예제가 이것밖에 없내요..ㅎㅎ..... 시간 복잡도는 O(longN) 이며 4,294,967,296개(약 43억개)를 32번만에 찾아낼 수 있는 빠른 알고리즘 입니다. 기초적이지만 재귀함수를 사용해 찾는 방법이라 재귀를 처음 접하거나 익숙하지 않다면 구현이 다소 어렵고 이해하기도 어렵습니다. 이런 좋은 알고리즘이지만 한가지 제약조건이 필요한데, 그것은 숫자가 정렬되어 있어야 한다는 점입니다. 우선 코드를 보겠습니다. #include using namespace.. 2019. 12. 4.
C++ string 사용법 및 기능정리(동작방식) C++에는 string이란 클래스가 있습니다. 이걸 사용하려면 string 헤더파일을 선언해 줘야 하며 다양한 기능을 제공합니다. 그렇다면 string이란 녀석이 왜 생겨났을까?? 기존 C언어에서 문자열 처리를 하려면 상당히 골치 아팠습니다. 특히 가변 길이를 처리할때요. 프로그래머가 손수 메모리를 재 할당 해주거나 그게 아니라면 충분한 문자열 배열을 선언해주거나... 너무 번거롭고 나중에 문제생길 것들이 많았죠... 예상치 못한 결과도 초래했다고 합니다. 그래서 C++에서는 class로 문자열을 감싸고 public을 통해 쉽게 사용할 수 있도록 정의하고 만들었습니다. 그래서 C++은 문자열 사용을 기본적으로 string으로 하고 있습니다. 그렇다면 string에 사용법에 대해 알아보도록 하겠습니다. S.. 2019. 11. 25.
C++ vector사용법 및 설명 (장&단점) C++의 vector는 C++ 표준라이브러리(Standard Template Library)에 있는 컨테이너로 사용자가 사용하기 편하게 정의된 class를 말합니다. vector를 생성하면 메모리 heap에 생성되며 동적할당됩니다. 물론 속도적인 측면에서 array(배열)에 비해 성능은 떨어지지만 메모리를 효율적으로 관리하고 예외처리가 쉽다는 장점이 있어 많이 사용하고 있씁니다. 그럼 우선 사용법에 대해 설명하겠습니다. Vector의 초기화 vector 변수명 백터 생성 vector 변수명(숫자) 숫자만큼 백터 생성 후 0으로 초기화 vector 변수명 = { 변수1, 변수2, 변수3... } 백터 생성 후 오른쪽 변수 값으로 초기화 vector 변수명[] = {, } 백터 배열(2차원 백터)선언 및 초.. 2019. 11. 24.
2020 카카오 공채 : 문자열 압축 (풀이 및 코딩) 조건은 s의 길이가 1 이상 1,000 이하.... 모든 알파벳은 소문자 입니다. 해당 코드는 2중 for문으로 충분히 풀이가 가능하고 탐색 조건도 쉽습니다. 앞에서부터 문자들을 차례대로 비교하면 됩니다. 처음엔 1개씩, 그 다음 2개, 그 다음 3개 ..... (s의 총 길이 / 2) 개 까지... 비교문자 마지막을 왜 s의 총 길이 / 2로 했냐면 그 이상 넘어가 버리면 비교의 의미가 없기 때문입니다. (비교할 수가 없죠) 그래서 예제 1번을 보면 aabbaccc 이렇게 있는데, 처음엔 a, a, b, b, a, c, c 하나씩 비교하고, 그 다음엔 aa, bb, ac, cc 이렇게 2개씩 비교하고, 그 다음엔 aab, bac, cc 이렇게 3개씩 비교하고..... 이런식으로 비교한 후 중복되는 알파.. 2019. 11. 23.
Kadane's algorithm 이란? (설명) 코딩 문제를 풀다보면 이런 문제가 나옵니다. "배열 A의 요소들 중 연속된 합이 가장 큰 수를 구하시오" "배열 A의 요소들 중 연속된 합이 가장 큰 배열 요소의 범위를 구하시오" 배열 요소중 양수만 있을 경우 모두 다 더해주면 되지만 음수가 들어가면 머리가 복잡해 집니다. 직관적으로 풀어버리면 이중 for문을 사용해 각 범위마다 값을 구한 후 구한 값들 중 가장 큰 값을 구해야 합니다. 하지만 이는 O(n^2)이 되버리며 코딩 문제에서도 이러한 답은 원하지 않습니다. 그리고 이러한 문제는 흔히 볼 수 있으며, 코딩 테스트를 준비하고 있는 분들이라면 기본적으로 손쉽게 풀 수 있어야 한다고 생각합니다. 위 문제들은 O(n)으로 풀 수 있는데 Kadane's algorithm을 사용하면 됩니다. 위 식이 K.. 2019. 11. 19.
Linux) Doker와 Container의 탄생과 설명, 차이점 ※이 글은 제가 인터넷으로 공부한걸 바탕으로 작성된 글입니다. 잘못된 내용이나 보충해야할 내용이 있으면 댓글이나 E-mail로 피드백 해주시면 감사하겠습니다. What is Docker? 도커는 리눅스의 컨테이너라는 기술(LXC)를 이용한 소프트웨어로 지금은 자체 라이브러리인 libcontainer를 사용하고 있습니다. 위 말만 들으면 도커가 뭐하는건지, LXC는 뭐고 libcontainer는 뭔지... 감이 안잡힙니다. 흔히 웹 검색으로 알 수 있는 지식은 다음과 같습니다. 1. 도커를 이용하면 개발환경에 구에받지 않고 손쉽게 내가 사용하던 개발환경을 구축할 수 있다. 2. 도커를 이용하면 여러개의 독립된 프로세스를 띄워 마이크로서비스가 가능해진다. 3. 도커를 이용하면 배포가 쉽고 수정도 쉽다. 4... 2019. 11. 13.
2019] 겨울 카카오 인턴십 코딩테스트 후기... 총 5문제 4시간안에 푸는 시험이었습니다. 저는 5문제중에 2문제밖에 못풀었고 푼 문제도 1번 2번입니다. 어렵진 않았던것 같은데 많은 삽질과 문자열 처리하는것 때문에 시간을 많이 잡아먹었습니다. 문제 이해하는것도 한 몫 했습니다. 1번은 stack이용해서 30분안에 풀었는데 2번은 문제가 문자열로 주어져서 당황했고 이로인해 문자열 처리하는 과정에서 시간을 거의다 날렸습니다. (3시간.... 30분 정도....) 3번 4번 5번문제는 문제읽고 고민하다가 만만한거 4번 집어서 풀었는데 2진 탐색으로 풀려고 했는데 이게 적용하는게 쉽지 않아서 결국 만들다가 시간이 다 갔습니다. 백터 사용해서 문자열 처리하는 실력을 좀 더 키워야 할 것 같습니다. ㅠㅠ 커트라인은 최소 3문제 이상 맞아야 될 것 같아보이네요... 2019. 11. 9.
[C++ 풀이] Codility - Lessons 9 (Maximum slice problem), MaxSliceSum 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제 설명 비어있지 않은 배열 A가 주어집니다. 배열 A의 길이는 1 ~ 1,000,000 이며, A[N]의 요소들은 -1,000,000 ~ 1,000,000이 될 수 있습니다. 그리고 배열들 요소의 최종 합은 int의 범위인 -2,147,483,648 ~ 2,147,483,647 입니다. 이때 배열 요소들의 합 중 가장 큰 합을 구하는 문제입니다. 결과 // you can use includes, for example: // #include // you can write to stdout for debugging purposes, e.g. // cout 2019. 11. 8.
[C++ 풀이] Codility - Lessons 9 (Maximum slice problem), MaxProfit 이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제 설명 배열 A가 주어집니다. A의 길이는 0 ~ 400,000까지 있으며 A[N]의 각 요소들은 0 ~ 200,000의 값을 지닐 수 있습니다. 배열 각 요소별 차가 가장 적은 값을 구하면 되는데 여기서의 범위는 다음과 같습니다. 0 2019. 11. 4.
728x90
반응형

스킨편집 -> html 편집에서