학습 정리 81

[C++] 백준 2108번 - 통계학

https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net [소스코드] #include #include #include using namespace std; // [baekjoon] 2108번 - 통계학 // 2023.01.22 int arr[800001] = { -5000 }; int main(void) { cin.tie(NULL); ios::sync_with_stdio(false); int n; cin >> n; int sum = 0; int cntNumArr[80..

[C++] 백준 11650번 - 좌표 정렬하기

https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net [소스코드] #include #include using namespace std; // [baekjoon] 11650번 - 좌표 정렬하기 // 2023.01.22 struct coordinate { int x; int y; }; bool compare(coordinate a, coordinate b) { if (a.x == b.x) {// x좌..

[C/C++] 카운팅 정렬 (Counting Sort)

카운팅 정렬 (Counting Sort) 카운팅 정렬 (Counting Sort)은 정렬할 수의 범위가 작은 경우 사용하는 정렬으로, 시간 복잡도가 O(n)인 매우 빠른 정렬입니다. 단점은 수의 범위가 커지면 사용하는 메모리도 그만큼 커진다는 단점이 있습니다. (이때문에 수의 범위가 작은 경우에 사용) 작동 원리 카운팅 정렬의 원리는 간단합니다. 정렬할 원소를 하나씩 살펴보고, 그 원소 값에 해당하는 배열에 카운트를 1 늘려주면 됩니다. 카운팅 정렬이 작동하는 방식을 GIF로 만들어 보았습니다. 위의 그림에서는 배열의 크기가 10,000개나 되지만, 실제 입력 값의 최대 크기는 7이므로 그만큼 크기를 줄여도 작동합니다. 반대로, 입력값에 100,000,005 같이 큰 수가 나온다면, 그만큼 배열이 커져야..

[C++] 백준 1181번 - 단어 정렬

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net [소스코드] #include #include #include using namespace std; // [baekjoon] 1181번 - 단어 정렬 // 2023.01.04 bool compare(string a, string b) { if (a.length() == b.length()) {// 길이가 같으면 return a < b;// b가 사전순으로 a 보다 다음 순서가 되게 정렬 ..

[C에서 C++로 넘어가기] - 5. 정렬하기 : sort

C++에서는 쉬운 정렬을 위해 sort함수가 지원됩니다. C언어에서도 stdlib.h 헤더파일을 선언하여 qsort()를 사용할 수 있지만, C++의 sort() 함수는 이와는 조금 다릅니다. sort C++에서 sort()함수는 헤더파일을 추가한 다음 사용할 수 있습니다. 이 sort 정렬 함수는 최악의 경우에도 O(nlogn)의 시간 복잡도를 가지는 intro sort 정렬 알고리즘을 이용합니다. intro sort 알고리즘은 quick 정렬 알고리즘을 기반으로, heap sort와 insertion sort를 혼합해 만든 알고리즘이라고 합니다. quick 정렬의 경우는 최악의 경우 O(n^2) 시간복잡도를 가지므로, 더 빠르게 사용할 수 있다는 장점이 있네요. sort 함수의 사용방법을 알아보겠습니..

[C++] 백준 25305번 - 커트라인

https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net [소스코드] #include #include using namespace std; // [baekjoon] 25305번 - 커트라인 // 2023.01.04 int main() { int arr[1001] = { 0 }; int n, k, x; cin >> n >> k; for (int i = 0; i > arr[i]; } sort(arr, arr + n, greater()); cout

[C++] 백준 2563번 - 색종이

https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net [소스코드] #include using namespace std; // [baekjoon] 2563번 - 색종이 // 2023.01.04 int main() { int arr[101][101] = { 0 }; int n, a, b; int area = 0; cin >> n; for (int k = 0; k > a >> b; for (int i = a; i < a + 10..

[C에서 C++로 넘어가기] - 4. 문자열 입력받기 : String

C++은 C와 비교해서 더 편리한 기능을 많이 지원하는데, 그 중 하나가 바로 문자열입니다. char*, char[] 로 문자열을 입력받는 C와는 달리 C++에서는 문자열을 더 쉽게 다룰 수 있습니다. string string은 C++ STL에서 제공하는 클래스로, 문자열을 다루는 클래스입니다. ( 클래스에 대한 설명은 이전 게시글을 참고해주세요! ) string의 특징을 간단하게 정리하면 다음과 같습니다. 문자열 끝에 null문자(‘\0’) 등이 포함되지 않는다. 문자열의 길이를 동적으로 변경 가능하다. 마치 배열처럼 한 문자씩 다룰 수 있다. 사용을 위해서는 string 헤더파일을 선언해야 한다. ( #include ) , ==, + 등과 같은 연산자들을 사용할 수 있다. 문자열 비교 (, ==) :..

[C에서 C++로 넘어가기] - 3. cin, cout, endl

C언어만 사용하던 입장에서, C++ 코드를 봤을때 가장 먼저 알 수 있던 차이점은 입출력시 printf, scanf 대신 cin, cout을 사용하는 것이었습니다. 이와같이 C++에서 지원하는 입출력에 대해 알아보겠습니다. cout C언어에서는 출력을 위해 printf를 사용했지만, C++에서는 더 쉬운 출력 함수인 cout이 지원됩니다. C에서 printf()를 사용하기 위해 를 include 했던 것처럼, C++에서 cout을 사용하기 위해서는 이라는 헤더파일을 include 해야 합니다. #include using namespace std; int main(void){ cout

[C에서 C++로 넘어가기] - 2. class

앞선 게시글에서 이야기한 것처럼, C++이란 C언어에 Class가 추가된 언어입니다. 이번 게시글에서는 Class가 무엇인지 살펴보겠습니다. class란? 클래스(class)의 정의는 " 특정한 용도를 수행하기 위한 변수와 함수를 모아 둔 틀 " 입니다. 언뜻 보면 클래스라는 게 C언어의 구조체(struct)와 비슷해 보입니다. 자세히 살펴보면, C언어의 구조체(struct) / C++의 구조체(struct) / C++의 클래스(class) 셋은 조금씩 다릅니다. 먼저 C++의 구조체가 C언어의 구조체와 다른 점은 다음과 같습니다. 함수를 구조체 멤버로 사용할 수 있다. typedef를 따로 선언하지 않아도, struct 키워드를 생략할 수 있다. 접근 제어자, 상속, 생성자, 소멸자도 선언가능하다. C..