백준 2750번 - Bronze I
#include <iostream>
#include <algorithm> // abs() 포함되어있음
#include <vector>
#include <string>
using namespace std;
int main(void){
int n,i;
cin>> n;
vector<int> numb(n);
for(i=0;i<n;i++){
cin>>numb[i];
}
sort(numb.begin(), numb.end());
//cout <<endl;
for(int i=0;i<n;i++){
cout << numb[i]<<endl;
}
return 0;
}
백준 2751번 - Silver V
- 계속 시도했는데 시간초과 되었는데, endl -> '\n' 바꾸니까 해결됨 ( 도대체 왜.....? )
- sort 사용하기
#include <iostream>
#include <algorithm> // abs() 포함되어있음
#include <vector>
using namespace std;
vector<int> numb;
int main(void){
int n,i,tmp;
cin>> n;
for(i=0;i<n;i++){
cin>>tmp;
numb.push_back(tmp);
}
sort(numb.begin(), numb.end());
for(int i=0;i<n;i++){
cout << numb[i]<<'\n'; // endl해서 채점이 느림???
}
return 0;
}
백준 10989번 - Silver V
- 시간 복잡도 해결
c와 c++의 표준 stream의 동기화를 끊는 역할을 한다
cin, cout 의 속도가 올라간다!!!!!
위 코드를 입력해서 cin, cout 속도를 높여주고 endl 대신 '\n'를 사용해야 합니다.
출처: https://mjmjmj98.tistory.com/45 [Live passionate😎]
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
#include <iostream>
using namespace std;
int main(void){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>> n;
int input[10001]={0};
//숫자 개수 카운트
for(int i=0;i<n;i++){
int tmp;
cin>>tmp; // 숫자 입력
input[tmp]++;
}
// 각 숫자를 개수만큼 출력해주기
for(int i=1;i<10001;i++){ // 배열 0부터 순서대로 cnt 개수만큼 출력하기
for(int j=0;j<input[i];j++){
cout << i<<'\n';
}
}
}
나온 숫자만큼 count 한다음 순서대로 cnt 숫자만큼 출력
백준 2108번 - Silver III -- 🍕(수정하기)
#include <iostream>
#include <algorithm> // abs() 포함되어있음
#include <vector>
#include <cmath>
using namespace std;
int arr[8001];
int main(void){
int n,sum=0,index=0,max=0;
cin>>n;
vector<int> list;
for(int i=0;i<n;i++){
int num=0;
cin>>num;
sum+=num;
if(num<=0)
index=-num;
else
index=4000+num;
arr[index]++;
if(arr[index]>max)
max=arr[index];
list.push_back(num); // 배열에 숫자 입력
}
// 1. 산술평균 : N개의 수들의 합을 N으로 나눈 값
float avg = sum/(float)n;
cout << round(avg)<<'\n'; // round() 반올림
// 2. 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
sort(list.begin(),list.end()); // 순서대로 정렬
cout <<list[list.size()/2]<<'\n';
// 3. 최빈값 : N개의 수들 중 가장 많이 나타나는 값
bool flag = false;
int result=0;
for(int i=-4000;i<4001;i++){
if(i<=0)
index=-i;
else
index=4000+i;
if(arr[index]==max){
result = i;
if(flag)
break;
flag = true;
}
}
cout << result <<'\n';
// 4. 범위 : N개의 수들 중 최댓값과 최솟값의 차이
cout << list[list.size()-1]-list[0]<<endl;
}
예제 입력 중 -0이 나옴
오류 해결하기!!!
'코딩 > C++' 카테고리의 다른 글
C++ - 배열 요소 (calloc 사용) (0) | 2022.03.20 |
---|---|
백준 문제풀이 C++ [220303] - 브루트 포스, pair<type, type> (0) | 2022.03.03 |
백준 문제풀이 C++ [220226] - 브루트 포스 (0) | 2022.02.26 |
백준 문제풀이 C++ [220225] - 기본 수학 1단계 (0) | 2022.02.25 |
백준 문제풀이 C++ [220223] - if문 (0) | 2022.02.23 |