728x90

전체 글 148

[프로그래머스/Lv1] - K번째 수

programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 주어진 입력에서 split()와 같이 일정 부분의 원소들을 자르고 정렬 후 k 번째 수를 고르는 문제 더보기 #include #include #include using namespace std; vector solution(vector arr, vector commands) { vector answer; const int commandsSize = commands.size(); for (int cmdIdx = 0; cmdIdx < comman..

[프로그래머스/Lv1] - 문자열 내 p 와 y의 개수

programmers.co.kr/learn/courses/30/lessons/12916 코딩테스트 연습 - 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 programmers.co.kr 코딩 테스트 준비를 위한 스터디에서 스터디원과 함께 진행하기 위한 단계로 풀지 않고 넘어갔던 문제들을 풀고있다. 간단하지만 다시 기초를 다진다는 마음으로 진행한다. 더보기 #include #include #include using namespace std; vector solution(vector arr,..

[백준] 11653 - 소인수분해

www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 2가지 방법으로 풀 수 있고 각 방법 마다 실행 속도가 차이난다. 처음에 보자말자 가장 간단하게 for() 를 사용한 코드를 구현했고 32ms가 나왔다. 채점 결과에 확인해보니 더 빠른 결과들이 있어 다시 고민하였다. sqrt()를 활용하면 더 빠른 수행속도를 기대할 수 있었다. for() 사용 더보기 #include #include #define MAX_NUM 10000001 int main() { // init std::ios::sync_with_stdio(false); // input int N = 0; (void)scanf..

[백준] 10757 - 큰수 A+B

www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 로직은 간단하게 생각했으나 std::atoi()의 특성을 제대로 이해하지 않고 사용해 시간이 걸렸던 문제 atoi는 char형 포인터를 문자열로 받는데 이때 1 byte의 char만 입력한다면 뒤에 null이 들어가지 않아 값이 다를 경우가 발생할 수 있다. 더보기 #include #include #include // define #define MAX_LEN 10002 int main() { // init std::ios::sync_with_stdio(false); // input char A[MAX_LEN] = { '..

[네트워크] Socket, Port, TCP, UDP 정의

1. Socket - 소프트웨어가 서로 연결하려면 Socket 연결이 필요. - Socket은 두 시스템 사이의 네트워크 연결을 나타내는 객체. - 2개의 소프트웨어가 연결이 될 때, 가장 중요한 것은 두 소프트웨어가 통신하는 방법 즉, 상대방에게 비트를 보내는 방법을 알고 있다는 것. - 직접적으로 연결을 해주는 저수준단계(이더넷 케이블, 네트워크 장치)은 운영체제별로 소프트웨어나 API에서 처리해주기에 개발자는 고수준단계(장치를 불러오는 직접적인 명령)만을 구현하면 된다. 2. PORT - IP 주소로 Socket이 연결되면 해당 컴퓨터끼리 연결이 된다. - 하나의 컴퓨터 안에서도 인터넷을 사용하는 여러 프로세스가 동시에 실행되고 있을 수도 있다. 컴퓨터끼리 연결하여 프로세스를 수행하려면 두 컴퓨터의..

[Ubuntu] 콘솔 명령어 정리

1. pwd - 현재 작업 디렉토리를 절대 경로명으로 출력. 2. ls [옵션] [파일명] - Window에서 'dir'과 같은 명령. - 현재 디렉토리 내의 파일과 디렉토리에 대한 정보를 출력 3. cd [디렉토리명] - 폴더 이동 4. cp [옵션] [원본 파일명] [대상 파일명 / 디렉토리명] - 하나 이상의 원본 파일을 복사한다. 5. mkdir [옵션] [파일명] - 새로운 디렉토리를 만든다. (쓰기 권한이 허용되어야만 만들 수 있다.) 6. rmidr [옵션 [파일명] - 디렉토리를 제거. (쓰기 권한이 허용되어야 제거할 수 있다.) 7. more [파일명] - 텍스트나 디렉토리의 리스트를 한 화면씩 볼 수 있다. 8. rm [옵션] [파일명] - 파일(디렉토리)를 삭제한다. - 삭제할려는 디..

[C++] Singleton 패턴을 사용하는 간단한 예제

코드를 구현하다보니 생각지 못하게 프로세스 내부에서 데이터 공유가 많이 발생하였고 singleton으로 수정해야 되는 부분이 있어, 샘플 코드를 작성하였다. - singleton.h #pragma once #include class Singleton { private: static Singleton* pInstance; Singleton() { num = 0; }; ~Singleton() {}; private: int num; public: static Singleton* getInstance() { if (pInstance == nullptr) { pInstance = new Singleton; } return pInstance; } void SetNum(int val) { num = val; } in..

Language/C++ 2021.03.02

[C++11] 가변인자(Variable Argument)를 이용한 Logger 만들기

1. 가변인자란? - 변수의 개수가 상황마다 변할 수 있는 인자. - 대표적인 예로 printf()와 scanf() 2. 가변인자를 사용하기 위한 함수 - va_start(var_list, lastfix) > Stack 상의 첫 가변인수의 위치를 구해 va_list 형에 대입한다. 함수가 호출되기 전에 선언되어 있어야 한다. > lastfix는 고정인수를 뜻한다. 고정인수는 가변인수의 시작번지를 찾기 위한 역할을 한다. (고정인수의 다음이 가변인수의 시작번지) - va_arg(va_list, type) > 가변 인수를 읽는 함수 > 첫 번째 인수는 va_start가 사용한 ap와 동일한 변수이고, ap가 가리키는 번지의 데이터를 가변인수로 읽는다. > 두 번째 인수는 type은 가변인수의 데이터 형을 나..

Language/C++ 11 2021.02.28
반응형