CS
-
[C++] 백준 4949번 - 균형잡힌 세상 (스택 응용)CS/백준 BOJ 2020. 6. 28. 22:07
https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단 www.acmicpc.net #include #include #include #include using namespace std; stack stck; voidprint_result(int is_balanced) { if (is_balanced) cout
-
[C++] 백준 10828번 - 스택 (스택 구현하기)CS/백준 BOJ 2020. 6. 28. 21:57
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net #include #include using namespace std; intstac[10001]; intpos = 0; voidprint_is_empty() { if (pos == 0) cout
-
[C언어] 백준 2577번 - 숫자의 개수CS/백준 BOJ 2020. 3. 21. 00:03
문제 링크 https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다. www.acmicpc.net 풀이 #include int main() { int a, b, c; int arr[10] = {0, }; scanf("%d %d %d", &a, &b, &c); int n = a*b*c; int num; while(n>0) { num = n%10; arr[num]++; n /= 10; } for(int i=0; i
-
[C언어] 백준 1110번 - 더하기 사이클CS/백준 BOJ 2020. 3. 20. 23:15
문제 링크 : https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = www.acmicpc.net 풀이 #include int main() { int n; int a, b, c; int cycle = 0; int c..
-
[자료구조(C언어)] 정렬 2 - 삽입 정렬 (insert sort)CS/자료구조&알고리즘 2020. 1. 30. 18:54
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 삽입 정렬 (insert sort) 하나의 배열에 데이터들이 이미 정렬되어있을 때, 정렬을 유지하면서 새로운 데이터를 삽입하는 알고리즘이다. 새로운 데이터를 정렬된 배열의 앞에 있는 데이터부터 차례대로 비교하면서 자신의 위치를 찾아 삽입한다. 이러한 삽입 연산을 반복적으로 수행함으로써 데이터들을 정렬한다. 오름차순 삽입 정렬 코드 void insertion_sort(int n, int data[]) { for (int i=1; i=0 && data[j]>tmp) { /* tmp보다 큰 값들을 뒤로 한 칸씩 옮긴다. */ data[j+1] = data[j]; j-; } /* tmp보다 작은 값을 발견하..
-
[자료구조(C언어)] 정렬 1 - 버블 정렬 (bubble sort)CS/자료구조&알고리즘 2020. 1. 30. 18:47
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 버블 정렬 배열에서 서로 인접한 두 원소를 검사하여 큰 값을 뒤로 보낸다. 이것을 배열의 끝에 도달할 때까지 반복하면 인덱스 0 ~ n-1까지의 원소들 중에서 가장 큰 값(/작은 값)을 맨 뒤(n-1)로 보내게 된다. (n-1은 다음 정렬에서 제외된다. 정렬이 수행될 때마다 제외되는 원소가 뒤에서부터 하나씩 늘어난다. ) ↓ 같은 방법으로 0~ n-2까지의 원소들 중에서 가장 큰 값을 n-2로 보내기 (n-2가 정렬에서 제외됨) 0~ n-3까지의 원소들 중에서 가장 큰 값을 n-3으로 보내기 (n-3이 정렬에서 제외됨) ... 0~1까지의 원소들 중에서 큰 값을 1로 보내기 위와 같은 과정을 거쳐 오..
-
[자료구조(C언어] 배열로 큐(Queue) 구현하기CS/자료구조&알고리즘 2020. 1. 30. 16:58
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 환형 배열로 큐 구현하기 큐의 경우 배열보다는 연결리스트로 구현하는 것이 좀 더 간단한데, 배열은 크기가 정해져있기 때문이다. 환형 배열(Circular array)을 이용해 큐를 구현하면 배열의 끝에 도달할 때마다 재할당을 해서 크기를 늘리지 않아도 된다. 배열의 앞에서부터 순서대로 데이터들을 저장한다. 데이터를 삭제하게 되면, 먼저 저장한 데이터부터(앞에서부터) 지워나간다. 이렇게 해서 배열의 앞에는 공간이 있고, 배열의 끝에는 데이터가 저장되어있는 상태에서 새로운 원소를 또 추가한다면, 다시 배열의 첫번째 칸에서부터 추가한다. 이와 같이 원형으로 순환하며 데이터를 저장한다. 헤더 파일은 연결리스..
-
[자료구조(C언어] 연결리스트로 큐(Queue) 구현하기CS/자료구조&알고리즘 2020. 1. 30. 07:00
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 단방향 연결리스트로 큐 구현하기 연결리스트의 맨 앞에서는 삽입과 삭제가 모두 어렵지 않다. 그러나 연결리스트의 맨 뒤에서는, 삽입은 괜찮지만 삭제를 하기가 어렵다. 단방향 연결리스트에서 어떤 노드를 삭제하기 위해서는 이전 노드의 주소를 알아야하기 때문이다. 따라서 연결리스트의 뒤쪽을 삽입이 일어나는 rear로, 앞쪽을 삭제가 일어나는 front로 하는 것이 유리하다. 삽입을 하기 위해서는 마지막 노드의 주소를 항상 기억해야 하므로, 연결리스트 포인터 구조체에 첫번째 노드의 주소를 저장하는 front변수(=head) 외에도 rear 변수를 따로 둬서 마지막 노드 주소를 저장하는 데 사용한다. 헤더파일 ..