#2750
#include <iostream>
using namespace std;
int main()
{
//bubble sort 사용
int N, temp;
cin >> N;
//arr N만큼 동적할당
int* arr = new int[N];
for (int i = 0; i < N; i++)
cin >> arr[i];
for(int i=0; i<N-1; i++)
for (int j = 1; j < N - i; j++)
{
if (arr[j - 1] > arr[j]) //arr[j-1]이 arr[j]보다 크다면 둘이 교환
{
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
for (int i = 0; i < N; i++)
cout << arr[i] << "\n";
delete[] arr;
return 0;
}
#2751
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N, temp;
cin >> N;
//arr N만큼 동적할당
int* arr = new int[N];
for (int i = 0; i < N; i++)
cin >> arr[i];
sort(arr, arr + N);
for (int i = 0; i < N; i++)
cout << arr[i] << "\n";
delete[] arr;
return 0;
}
#10989
#include <iostream>
using namespace std;
int main()
{
//이 세줄을 넣어줘야지 타임오버 안뜬다..
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, temp;
cin >> N;
int arr[10001] = { 0 };
//입력값을 전부 받아 비교하면 시간초과
//입력값의 index의 count를 증가시키자
for (int i = 0; i < N; i++)
{
cin >> temp;
arr[temp]++;
}
for (int i = 1; i < 10001; i++) //1~10000까지
{
for (int j = 0; j < arr[i]; j++) //arr에서 count 된 수만큼 출력하기 위함
{
cout << i << "\n";
}
}
return 0;
}
#2108
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> arr;
int main()
{
int mean = 0, median, mode, range = 0, max=0, index; //산술평균, 중앙값, 최빈값, 범위
int count[8001] = { 0 }; // 마이너스 값이 있기 때문에 4000을 더해줘서 범위를 0~8000으로 만든다.
int N, temp;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> temp;
arr.push_back(temp);
mean += temp;
count[temp + 4000]++;
}
sort(arr.begin(), arr.end());
mean = round((double)mean / N);
median = arr[arr.size() / 2];
range = arr.back() - arr.front();
for (int i = 0; i < 8001; i++)
{
if (count[i] > max)
{
max = count[i];
index = i; //max가 되는 index 저장
}
}
for (int i = index + 1; i < 8001; i++) //max인 index의 다음부터 다시 검색해서
{
if (count[i] == max) //최빈값이 한번 더 있다면
{
index = i; //그 값이 두번째로 작은 값이므로 저장해주고 break
break;
}
}
cout << mean << "\n";
cout << median << "\n";
cout << index - 4000 << "\n"; //4000 더해줬으므로 빼주기
cout << range;
return 0;
}
#1427
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool compare(char a, char b)
{
return a > b;
}
int main()
{
string str;
cin >> str;
sort(str.begin(), str.end(), compare);
cout << str;
return 0;
}
#11650
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int N, x, y;
vector<pair<int,int>> arr;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> x >> y;
arr.push_back({ x,y });
}
sort(arr.begin(), arr.end());
for (int i = 0; i < N; i++)
{
cout << arr[i].first << " " << arr[i].second << "\n";
}
return 0;
}
#11651
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<long, long> a, pair<long, long> b)
{
if (a.second == b.second)
return a.first < b.first;
else
return a.second < b.second;
}
int main()
{
int N, x, y;
vector<pair<long,long>> arr;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> x >> y;
arr.push_back({ x,y });
}
sort(arr.begin(), arr.end(), compare);
for (int i = 0; i < N; i++)
{
cout << arr[i].first << " " << arr[i].second << "\n";
}
return 0;
}
#1181
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
bool compare(string a, string b)
{
if (a.length() == b.length())
{
for (int i = 0; i < a.length(); i++)
{
if (a[i] != b[i]) //alphabet순 정렬
return a[i] < b[i];
}
}
return a.length() < b.length();
}
int main()
{
int N;
string str;
vector<string> arr;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> str;
arr.push_back(str);
}
sort(arr.begin(), arr.end(), compare);
for (int i = 0; i < N; i++)
{
if (i > 0 && arr[i] == arr[i - 1])
continue;
cout << arr[i] << "\n";
}
return 0;
}
#10814
#include <iostream>
#include <vector>
#include <string>
#include <utility>
#include <algorithm>
using namespace std;
struct person {
int index;
int age;
string name;
};
bool compare(person a, person b)
{
if (a.age < b.age)
return true;
else if (a.age == b.age)
return a.index < b.index;
else
return false;
}
int main()
{
//저장해야 하는 것 : 들어온 순서, 나이, 이름
//struct 사용해서 풀어보기
int N;
cin >> N;
vector<person> p(N);
for (int i = 0; i < N; i++)
{
cin >> p[i].age >> p[i].name;
p[i].index = i;
}
sort(p.begin(), p.end(), compare);
for (int i = 0; i < N; i++)
{
cout << p[i].age << " " << p[i].name << "\n";
}
return 0;
}
#18870
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
//Todo
//input값들을 오름차순으로 정렬
//중복을 제거하고 index값 리턴
//들어온 순서대로 index값을 리턴해야하므로 input값을 복사해두기
vector<int> a, b;
int temp, N;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> temp;
a.push_back(temp);
b.push_back(temp);
}
sort(a.begin(), a.end());
a.erase(unique(a.begin(), a.end()), a.end()); //중복되는 값 제거
for (int i = 0; i < N; i++)
{
//index값 리턴
//lower_bound의 리턴값이 iterator이므로 index값을 알고 싶다면
//배열의 첫번째 주소인 a.begin()을 빼준다.
cout << lower_bound(a.begin(), a.end(), b[i]) - a.begin() << " ";
}
return 0;
}