백준 2750번
#include <iostream>
#include <cstdlib>
using namespace std;
int compare(const void* a, const void* b) {
const int* x = (int*)a;
const int* y = (int*)b;
if (*x > *y) {
return 1;
}
else if (*x < *y) {
return -1;
}
return 0;
}
int num[1000] = { 0 };
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num[i];
}
qsort(num, (size_t)n, sizeof(int), compare);
for (int i = 0; i < n; i++) {
cout << num[i] << "\n";
}
return 0;
}
백준 2751번
#include <iostream>
#include <cstdlib>
using namespace std;
int compare(const void* a, const void* b) {
const int* x = (int*)a;
const int* y = (int*)b;
if (*x > *y) {
return 1;
}
else if (*x < *y) {
return -1;
}
return 0;
}
int num[1000000] = { 0 };
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num[i];
}
qsort(num, (size_t)n, sizeof(int), compare);
for (int i = 0; i < n; i++) {
cout << num[i] << "\n";
}
return 0;
}
위에는 미리 외운 qsort로 빠르게 풀었는데 그 다음 문제부터 난관에 봉착함
바로 구글링하고 vector && sort 내장함수 어떻게 쓰는지 알아봄
백준10825
/* vector 만드는 방법 */
vector<name_of_struct_name> object_name(n);
#include <iostream>
#include <cstdlib>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
typedef struct {
string name;
int kor;
int eng;
int math;
}student;
bool compare(student a, student b) {
if (a.kor == b.kor) { // 두 명 국어 점 수 같을 때
if (a.eng == b.eng) { // 두 명 영어 점수 같을 때
if (a.math == b.math) {
return a.name < b.name; // 수학 점수 비교해서도 같을 때 이름 사전순
}
else {
return a.math > b.math; // 국어, 영어 같을 때 수학 점수 큰지 반환
}
}
else {
return a.eng < b.eng; // 국어 점수 같을 때 영어 점수 비교
}
}
else {
return a.kor > b.kor; // 국어 점수로만 비교
}
}
int main(void) {
int n;
cin >> n;
vector<student> students(n);
for (int i = 0; i < n; i++) {
cin >> students[i].name >> students[i].kor >> students[i].eng >> students[i].math;
}
sort(students.begin(), students.end(), compare);
for (int i = 0; i < n; i++)
{
cout << students[i].name << "\n";
}
return 0;
}
sort(시작점, 끝점, 비교하는 함수 || 값);
백준 13458
#include <iostream>
#include <vector>
using namespace std;
int main(void) {
int n;
cin >> n;
vector<int> a(n);
int b, c;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cin >> b >> c;
long long cnt = 0;
for (int i = 0; i < n; i++) {
a[i] -= b;
cnt++;
if (a[i] <= 0) {
continue;
}
cnt += (a[i] / c);
if (a[i] % c != 0) {
cnt++;
}
}
cout << cnt;
return 0;
}
어디서 틀렸는지 한참 찾음
long long cnt로 변수 타입 바꿔주니까 바로 맞음
이런 문제가 제일 킹받음
배운 것 정리
1. c++ qsort
2. c++ sort
3. c++ vector 사용법
스터디 자료 https://github.com/Altu-Bitu/Notice/tree/main/09%EC%9B%94%2003%EC%9D%BC%20-%20%EC%A0%95%EB%A0%AC
'자료구조, 알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준 2606] 바이러스 (0) | 2022.06.21 |
---|---|
[백준] 6588 골드바흐의 추측 (0) | 2022.04.02 |
[백준] 1406 에디터 (0) | 2022.03.06 |
[백준 4375] 모듈로 연산이란? (0) | 2022.02.16 |
[백준] 1920 C언어 (0) | 2021.12.25 |