전체 글

전체 글

    좌표 압축 풀이

    문제 링크: https://www.acmicpc.net/problem/18870 백준 정렬 12단계 - 18870번 좌표 압축을 풀어보았다. 풀이: 압축한 결과는 좌표의 순서와 같다는 점을 알아내면 된다. C++의 경우, erase와 unique를 써서 중복을 제거했다. (전에는 입력마다 중복인지 확인했는데, 그러면 시간초과가 난다) 파이썬의 경우, 딕셔너리를 사용해 시간을 줄였다. C++ #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); // 시간 빠르게 하기 위해서 cin.tie(NULL); cout.tie(NULL); int n; cin>>n; vector v1; // 모든 입력 ..

    나이순 정렬 풀이

    문제 링크: https://www.acmicpc.net/problem/10814 백준 정렬 11단계 - 10814번 나이순 정렬을 풀어보았다. 풀이: 가입순을 신경 써서 풀어야 한다. 파이썬의 경우, lambda에서 조건을 두 개(나이, 가입순)를 써서 정렬했다. C++ #include #include #include using namespace std; bool comp(pair a,pair b) { if(a.second.first==b.second.first) return a.firstn; vector user; for(int i=0;i>age>>name; user.push_back(pair(i,pair(age,name))); } sort(user.begin(),user.end(),comp); for..

    단어 정렬 풀이

    문제 링크: https://www.acmicpc.net/problem/1181 백준 정렬 10단계 - 1181번 단어 정렬을 풀어보았다. 풀이: 사전순으로 정렬을 하고, 그리고 길이순으로 정렬을 하면 된다. C++의 경우, find 리턴값이 v.end() 면 요소가 있다는 것이고, bool 함수의 리턴값으로 비교함수를 줄 수 있다는 것을 알게 되었다. C++ #include #include #include using namespace std; bool cmp(string s1, string s2) // 길이 비교 함수 { if(s1.size()==s2.size()) return s1n; vector v; for(int i=0;i>s; if(find(v.begin(),v.end(),s)==v.end()) ..

    좌표 정렬하기 2 풀이

    문제 링크: https://www.acmicpc.net/problem/11651 백준 정렬 9단계 - 11651번 좌표 정렬하기 2를 풀어보았다. 풀이: y값대로 정렬하고 출력하면 된다. C++ #include #include #include using namespace std; int main() { int n; cin>>n; vector vv; for(int i=0;i>a>>b; v.push_back(b); v.push_back(a); vv.push_back(v); } sort(vv.begin(), vv.end()); for(int i=0;i

    좌표 정렬하기 풀이

    문제 링크: https://www.acmicpc.net/problem/11650 백준 정렬 8단계 - 11650번 좌표 정렬하기를 풀어보았다. 풀이: 좌표를 받아 x와 y좌표대로 정렬하면 된다. C++ #include #include #include using namespace std; int main() { int n; cin>>n; vector vv; for(int i=0;iinp; v.push_back(inp); } vv.push_back(v); } sort(vv.begin(), vv.end()); for(int i=0;i

    소트인사이드 풀이

    문제 링크: https://www.acmicpc.net/problem/1427 백준 정렬 7단계 - 1427번 소트인사이드를 풀어보았다. 풀이: 문자열로 입력받고 거꾸로 정렬해 출력한다. C++의 경우, string 자체가 sort가 된다는 것과 greater을 써서 내림차순을 할 수 있다는 것을 알게 되었다. C++ #include #include using namespace std; int main() { string s; cin>>s; sort(s.begin(),s.end(),greater()); // greater을 하면 내림차순이 된다 cout

    통계학 풀이

    문제 링크: https://www.acmicpc.net/problem/2108 백준 정렬 6단계 - 2108번 통계학을 풀어보았다. 풀이: 평균, 중앙값, 최빈값, 범위를 출력하면 된다. 최빈값 조건이 까다로우니 잘 해결해야 한다. C++의 경우, https://cryptosalamander.tistory.com/47 를 참조했다. 파이썬의 경우, counter를 이용해 풀었다. C++ #include #include #include #include using namespace std; vector arr; int main() { int num,tmp,range,middle = 0,most_val,mean = 0; int most = -9999; int number[8001] = {0,}; bool no..

    수 정렬하기 3 풀이

    문제 링크: https://www.acmicpc.net/problem/10989 백준 정렬 5단계 - 10989번 수 정렬하기 3을 풀어보았다. 풀이: 메모리와 시간에 제한이 있으므로, 적절한 정렬 알고리즘을 골라야 한다. C++의 경우, ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)을 써서 시간을 줄였다. 파이썬의 경우, 입력값의 위치에 횟수를 저장하고 그 횟수만큼 출력시키게 했다. C++ #include using namespace std; int main() { ios::sync_with_stdio(false); // 시간 줄이기용 cin.tie(NULL); cout.tie(NULL); int n; cin>>n; int arr[10001] ..