본문 바로가기

c++92

[백준 11650번][C++] 좌표 정렬하기 #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; map XY; for (int i = 0; i > x >> y; XY[x].push_back(y); } for (map::iterator iter = XY.begin(); iter != XY.end(); iter+.. 2023. 7. 28.
[백준 1427번][C++] 소트인사이드 #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; vector count(10); // 0~9까지의 숫자들의 갯수를 담을 벡터 // 자릿수 별로 갯수를 파악 while (N > 0) { int curNum = N % 10; // 마지막 자릿수 count[curNum]++; N /= 10; } // 자릿수 별 갯.. 2023. 7. 27.
[면접 준비] 배열이 순차적으로 데이터를 저장하는 이유 1. 배열의 특징 - 데이터를 순차적으로 저장 - 인덱스를 이용하여 데이터에 빠르게 접근 가능 2. 배열이 순차적으로 저장되는 이유 - 실제 메모리 상에서 데이터가 순차적으로 저장되면 맨 앞의 주소와 해당 자료형의 byte수, 인덱스 번호만으로 데이터에 접근할 수 있기 때문이다.([2,4,5] -> 2의 주소 1000 -> 5의 주소 = 2의 주소(1000) + int형(4byte)*인덱스번호(2) = 1008) - 즉, 인덱스를 이용해 데이터에 빠르게 접근하기 위해 순차적으로 저장되는 것이다. 3. 데이터가 순차적으로 저장되는 배열의 단점 - 삽입 삭제가 느림 -> 삭제나 삽입 시 해당 위치 이후의 모든 원소들을 한칸씩 이동시켜야하기 때문 - resizing이 어려움 -> 크기가 예측이 어려운 데이터를.. 2023. 7. 26.
[백준 10989번][C++] 수 정렬하기 3 #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; vector count(10001); // 원소 입력 for (int i = 0; i > x; count[x]++; // 입력된 수의 갯수를 파악 } // 원소 출력 for (int i = 1; i 2023. 7. 26.
[백준 25305번][C++] 커트라인 #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, k; cin >> N >> k; vector v(N); for (int i = 0; i > v[i]; } for (int i = 0; i < v.size() - 1; i++) { int maxVal = v[i]; int maxIndex = i; fo.. 2023. 7. 24.
[백준 1620번][C++] 나는야 포켓몬 마스터 이다솜 #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M; map book1; // 도감1 -> 번호로 이름찾기 map book2; // 도감2 -> 이름으로 번호찾기 for (int num = 1; num > name; book1.insert({ num,name }); book2.insert({ name,num }); .. 2023. 7. 21.
[면접 준비][C#] class와 struct의 차이점 1. struct(구조체) [C#] - 값 형식 -> 복사(call by value) - 스택에 할당 -> GC사용x -> 프로그램 속도 향상에 도움 - 자주 사용하지 않고 인스턴스 크기가 16바이트 미만인 경우에 사용 - protect 선언 불가 , 상속 불가 [C++] - 기본값이 public 2. class(클래스) [C#] - 참조 형식 -> 주소(call by reference) - 힙에 할당됨 -> 삭제시 GC사용 -> 프로그램 속도 저하 - 변수나 함수 등이 자주 사용될 경우에는 참조로 접근하는 것이 좋음 - protect 선언 가능, 상속 가능 [C++] - 기본값이 private C#에서 구조체는 값 형식인 call by value 형태로 값이 복사되어 전달되고, 클래스는 참조 형식인 c.. 2023. 7. 20.
[백준 2705번][C++] 수 정렬하기 - 7. 쉘 정렬 #include #include #include #include #include #include #include #include #include #include using namespace std; void SkipInsertionSort(vector& v, int start, int skipNum) { // 숫자를 건너뛰는 삽입정렬 for (int i = start + skipNum; i = 0; j -= skipNum) { if (v[j] > originNum) { // 앞의 숫자가 더 큰 경우 v[j + skipNum] =.. 2023. 7. 20.
[C++] 문자열 리터럴 #include using namespace std; int main() { char str[] = "hello"; // 1번 const char *pstr = "eee"; // 2번 // char *pstr = "eee"; -> 안됨 str[3] = 'k'; // pstr[3] = 'k'; -> 안됨 cout 2023. 7. 19.
[C++] 메모리 구조 1. Text 영역(Code 영역) - 작성한 코드들이 컴파일 이후 기계어로 번역되어 저장되어 있는 공간 - 프로그램이 끝날때까지 메모리에 남아있음 - 읽기 전용 공간 2. Rodata 영역 - Read Only data, 즉 읽기 전용 data들이 저장되는 공간 - const 변수, 문자열 상수, printf의 중괄호 부분이 주로 들어감 3. Data 영역 - 전역 변수, 전역 배열, 전역 구조체 등을 저장하는 공간 - 정적 변수(static)도 저장 - 초기화 한 이후의 전역변수를 저장 4. Bss 영역 - Data와 매우 비슷 - 전역 변수(배열, 구조체 포함), 정적 변수 저장 - 초기화 이전의 전역변수를 저장(차이점) cf) 전역변수들은 main이 실행되기 전에 bss에 저장되며, bss 영역에.. 2023. 7. 19.
[백준 14425번][C++] 문자열 집합 #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int result = 0; int N, M; cin >> N >> M; map map; for (int i = 0; i > s; map.insert({ s, true }); } for (int i = 0; i > s; if (map[s]) result++; } cout 2023. 7. 19.
[백준 2705번][C++] 수 정렬하기 - 6.병합 정렬 #include #include #include #include #include #include #include #include #include #include using namespace std; void Merge(vector& v, int left, int mid, int right) { int i = left; // 왼쪽 부분 시작지점 int j = mid + 1; // 오른쪽 부분 시작지점 int k = left; // 원소를 넣을 위치 vector sortedVec(v.size()); // 정렬된 벡터를 저장할 공간 // 왼쪽부분과 오른쪽 부분의 원소들을 하나씩 차례로 비교하여 더 작은 원소를 sortedVec에 넣음. // 왼쪽 부분과 오른쪽 부분은 이미 오름차순으로 정렬되어있는 상태이므로 .. 2023. 7. 19.