(C++) BOJ/백준 5565 - 영수증 문제 출처 : BOJ 5565 - 영수증 www.acmicpc.net/problem/5565 책 10권의 총 가격과 9권의 각 가격이 주어졌을 때, 나머지 한 권의 가격을 구하는 비교적 쉬운 문제이다. 최종 코드 #include using namespace std; int main() { int n, cost; cin >> n; for (int i = 0; i > cost; n -= cost; } cout BOJ 2021.04.06
(C++) BOJ/백준 11650 - 좌표 정렬하기 문제 출처 : BOJ 11650 - 좌표 정렬하기 www.acmicpc.net/problem/11650 평면 위의 점 N개의 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순으로 정렬하는 문제이다. 어제 풀었던 BOJ 10814 나이순 정렬 문제랑 굉장히 비슷하다. https://yeongjujeong1021.tistory.com/17?category=1012907 이 문제도 헤더의 sort() 함수를 이용해서 풀어보았다. 최종 코드 #include #include using namespace std; #define MAX 100000 struct coordinate { int x; int y; } c[MAX]; bool func(coordinate a, coordinate b) {.. BOJ 2021.04.05
(C++) BOJ/백준 2751 - 수 정렬하기 2 문제 출처 : BOJ 2751 - 수 정렬하기 2 www.acmicpc.net/problem/2751 의 sort() 라는 정렬 함수를 배우게 되어서 정렬 문제를 한번 풀어보았다. 수를 입력 받아서 오름차순으로 정렬하는 문제이다. C언어에서 기본적으로 사용하던 swap() 함수를 이용한 정렬은 시간복잡도가 O(n^2)이어서 시간 초과가 떴었다. 최종 코드 #include #include using namespace std; #define MAX 1000000 int arr[MAX]; int main() { int n; cin >> n; for (int i = 0; i > arr[i]; sort(arr, arr + n); for (int i = 0; i < n; i++) cout BOJ 2021.04.04
(C++) BOJ/백준 10828 - 스택 문제 출처 : BOJ 10828 - 스택 www.acmicpc.net/problem/10828 C++ 자체에 스택 기능이 포함되어 있다는 사실을 알게 되어서 스택 관련 예제를 풀어보았다. push x, pop 등 각각의 명령을 수행하고 그 명령에 맞는 출력을 하는 문제이다. 최종 코드 #include #include #include using namespace std; int main() { int n, num; cin >> n; stack s; char str[6]; while (n--) { cin >> str; if (!strcmp(str, "push")) { cin >> num; s.push(num); } else if (!strcmp(str, "pop")) { if (s.size()) { cout BOJ 2021.04.04
(C++) BOJ/백준 10814 - 나이순 정렬 문제 출처 : BOJ 10814 - 나이순 정렬 www.acmicpc.net/problem/10814 오늘의 마지막 문제이다. sort()라는 또다른 엄청난 기능을 배웠다. 되게 간단하면서도 복잡한데, 일단 sort()는 정렬 알고리즘이다. sort(a, b)는 [a, b)까지 오름차순으로 정렬한다. 오름차순이 싫으면 마지막에 parameter로 bool type의 function을 추가할 수 있다. 원래 있던 걸 써도 되고, 새로 만들어서 써도 되는데, 원래 있던 것을 쓰려면 을 include한 후에, less 또는 greater을 사용하면 된다. less은 첫번째 원소가 두번째 원소보다 작으면 true를 반환한다. 즉, 오름차순으로 정렬한다. greater은 첫번째 원소가 두번째 원소보다 크면 tru.. BOJ 2021.04.03
(C++) BOJ/백준 1158 - 요세푸스 문제 문제 출처 : BOJ 1158 - 요세푸스 문제 www.acmicpc.net/problem/1158 C++에 있는 STL의 queue를 배운 기념으로, 과제로 풀어야 하는 예제를 풀어보았다. 1부터 N번까지 N명의 사람들이 원을 이루면서 앉아있고, K번째 사람을 순서대로 제거하는 문제이다. 최종 코드 #include #include using namespace std; int main() { int n, k; cin >> n >> k; queue q; for (int i = 1; i BOJ 2021.04.03
(C++) BOJ/백준 3986 - 좋은 단어 문제 출처 : BOJ 3986 - 좋은 단어 www.acmicpc.net/problem/3986 동아리에서 C++의 STL Container를 배웠다. 그중 stack에 대한 예제를 알려주셔서 풀어봤다. 단어가 주어졌을 때 같은 글자끼리 짝이 맞춰질 때, 그 단어를 좋은 단어라고 하고, 이 문제는 좋은 단어의 개수를 세는 문제이다. 최종 코드 #include #include using namespace std; int main() { int n, cnt = 0; cin >> n; while (n--) { stack s; string str; cin >> str; int len = str.length(); for (int i = 0; i < len; i++) { if (s.size()) { if (s.to.. BOJ 2021.04.03
(C++) BOJ/백준 2609 - 최대공약수와 최소공배수 문제 출처 : BOJ 2609 - 최대공약수와 최소공배수 www.acmicpc.net/problem/2609 최종 코드 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; int max(int a, int b) { for (int i = (a 0; i--) if (a % i == 0 && b % i == 0) return i; return 0; } int min(int a, int b) { for (int i = (a > b) ? a : b; ; i++) if (i % a == 0 && i % b == 0) return i; return 0; } int main() { int a, b; cin >> a >> b; .. BOJ 2021.04.03
(C++) BOJ/백준 1008 - A/B 문제 출처 : BOJ 1008 - A/B https://www.acmicpc.net/problem/1008 두 정수를 나눈 값을 출력하는 문제이다. 정답과 출력값의 오차가 10^(-9) 이하여야 한다고 한다. C언어에서라면 printf()를 사용하여 %.10f라고 썼을 것이다. C++에서 cout을 사용하는 경우에는 어떻게 출력해야 하는지 고민을 거듭한 끝에, 윈도우 프로그래밍 시간에 배운 라이브러리의 setprecision() 함수를 사용해보았다. setprecision(p) 함수는 실수 유효 숫자 자릿수를 p로 지정하는 함수이다. 소수점을 제외한 숫자부분이 p만큼 출력되는 것이다. 소수점 아래부분이 나누어 떨어지는 경우에는 더이상 출력을 하지 않는다. (ex) 입력 4 5 출력 0.8) #includ.. BOJ 2021.03.28