All
[Effective C++] 2. #define을 쓰려거든 const, enum, inline을 떠올리자
[Effective C++] 2. #define을 쓰려거든 const, enum, inline을 떠올리자
2022.05.06주제에 더 가까운 제목은 가급적 선행 처리자보다 컴파일러를 더 가까이 하자.라고 한다. #define 상수의 단점 #define ASPECT_RATIO 1.653 ASPECT_RATIO가 기호식 이름으로 보이지만 컴파일러에게 넘어가기 전에 전처리기가 숫자 상수(1.653)로 바꿔버리기 때문에 ASPECT_RATIO라는 이름은 컴파일러가 쓰는 기호 테이블에 들어가지 않는다. 그래서 숫자 상수로 대체된 코드에서 컴파일 에러라도 발생하게 되면 에러 찾기가 꽤나 힘들 수 있다. (소스코드엔 ASPECT_RATIO, 에러 메시지는 1.653) 또, 기호 테이블에 이름이 없기 때문에 기호식 디버거에서도 문제가 나타날 수 있다. 해결 방법 : const const double AspectRatio = 1.653; 상..
[Effective C++] 1. C++을 언어들의 연합체로 바라보는 안목은 필수
[Effective C++] 1. C++을 언어들의 연합체로 바라보는 안목은 필수
2022.05.04초창기의 C++ 단순히 C 언어에 객체 지향 기능 몇 가지가 결합된 형태 오늘날의 C++ 다중패러다임 프로그래밍 언어(multiparadigm programming language)로 아래의 개념들을 지원하고 있다. 절차적 프로그래밍 객체 지향 프로그래밍 함수식 프로그래밍 일반화 프로그래밍 메타 프로그래밍 따라서 C++을 잘 사용하기 위해선 단일 언어가 아닌, 상관관계가 있는 여러 언어들의 연합체로 봐야 한다. C++의 하위 언어 C++은 4가지의 하위 언어들로 이루어져 있다. 1. C C++의 기본이 되는 언어 블록, 문장, 선행 처리자, 기본 제공 데이터 타입, 배열, 포인터 등 2. 객체 지향 개념의 C++ '클래스를 쓰는 C'에 관한 모든 것 클래스(생성자와 소멸자 개념까지), 캡슐화, 상속, 다..
[OS] 컨텍스트 스위칭(Context Switching)
[OS] 컨텍스트 스위칭(Context Switching)
2021.12.31컨텍스트 스위칭(Context Switching)이란? 멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 PCB에 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)을 PCB에서 가져와 교체하는 작업 그림으로 나타내면 아래와 같다. 그림 1을 통해 컨텍스트 스위칭이 일어나는 과정을 확인해보자. 단계 절차 설명 1 인터럽트/시스템 호출 운영체제에서 프로세스 스케쥴러에 의해 인터럽트 발생 2 커널 모드 전환 프로세스 P0이 사용자 모드(executing)에서 커널 모드(idle)로 전환 (프로세스 P0이 C..
[C++ 백준] 1003 피보나치 함수
[C++ 백준] 1003 피보나치 함수
2021.12.18블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 다음 소스는 N번째 피보나치 수를 구하는 C++함수이다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) 호출한다. fibonacci(2)는 fibonacci(1)과 fibonacci(0)을 호출한다. fibonacci(1)은 1을 출력하고 1을 리턴한다. fibonacc..
[C++ 백준] 15652 N과 M (4)
[C++ 백준] 15652 N과 M (4)
2021.12.12블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 (1
[C++ 백준] 1932 정수 삼각형
[C++ 백준] 1932 정수 삼각형
2021.11.22블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 삼각형의 맨 위층부터 시작해서 아래에 있는 수 중 하나를 선택하여 내려올때, 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하시오. (현재 층에서 선택 된 수의 왼/오른쪽 아래 대각선만 선택 할 수 있다.) 첫째 줄에 삼각형의 크기(1
[C++ 백준] 15650 N과 M (2)
[C++ 백준] 15650 N과 M (2)
2021.10.30블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 (1
[C++ 백준] 2108 통계학
[C++ 백준] 2108 통계학
2021.10.04블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 다음 4가지의 기본 통계 값을 구하는 프로그램을 작성하시오. 단, N(1 x; int sum = 0; int index = 0; int max = 0; vector list; for (int i = 0; i > num; sum += num; if (num max) max = arr[index]; list.push_back(num); } // 평균, 소수점 이하 첫째 자리 반올림 float avg = sum / (float)x; cout
[GitHub] 토큰 인증 로그인 + 자격 증명
[GitHub] 토큰 인증 로그인 + 자격 증명
2021.08.262021년 8월 13일 이후로 GitHub.com에서 Git 작업을 인증할 때 더 이상 계정 암호를 허용하지 않으며 token-based authentication이 필요하다고 한다. * two-factor authentication을 이미 사용 중인 사람이라면 해당 인증 절차 공지사항에 해당이 되지 않는다. 따라서 Personal Access Token을 추가해야 하며, 해당 글은 Personal Access Token 생성 및 등록 방법에 대해서 알아본다. 개인 액세스 토큰 생성 방법 GitHub 접속 Profile → Settings → Developer settings → Personal access tokens → Generate new token Access token 생성 1. Note: 토..
[C++ 백준] 1181 단어 정렬
[C++ 백준] 1181 단어 정렬
2021.08.26블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 풀이 전략 algorithm의 sort와 vector를 이용해서 정렬한다. 정렬 기준은 사이즈가 같으면 두 값을 비교, 다르면 오름차순 정렬한다. 소스 코드 #include #include #include #include using namespace std; bool Compare( string a, string b ) { if (a.size() == b.size()) { int x = a.compare(b); return x < 0; } else return (a.size..
[C++ 백준] 18870 좌표 압축
[C++ 백준] 18870 좌표 압축
2021.08.18블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 수직선 위에 N개(1 x; vec.push_back(x); org.push_back(x); } sort(vec.begin(), vec.end()); vec.resize(unique(vec.begin(), vec.end()) - vec.begin()); for (int x : org) { int print = lower_bound(vec.begin(), vec.end(), x) - vec.begin(); cout
[C# 6.0] 문자열 보간(String interpolation)
[C# 6.0] 문자열 보간(String interpolation)
2021.07.04C# 6.0에서 문자열 보간(String interpolation)이라는 기능이 추가되었다. $ 특수문자는 문자열 리터럴을 보관된 문자열로 식별하는데, 보간 된 문자열이란 보간 식이 포함될 수 있는 문자열 리터럴이다. 기존 String.Format()과 기능은 동일 하지만 더 읽기 쉽고 편리하게 출력 서식을 지정할 수 있다고 한다. 기본적으로 사용은 문자열 앞에 $기호를 추가하면 된다. $"오늘은 {month}월 {day}일이야." 보간 된 문자열의 구조 보간 된 문자열의 구조는 다음과 같다. {[,][:]} 대괄호 안의 요소는 선택사항으로, 각 요소들이 의미하는 바는 아래 표와 같다. 요소 설명 interpolationExpression 서식을 지정할 결과를 생성하는 식. null의 문자열 표현은 St..