Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 기계학습
- Javascript
- 드림핵
- 숙명여자대학교 정보보안 동아리
- XSS Game
- BOJ Python
- C언어
- Sookmyung Information Security Study
- 생활코딩
- 백준
- CSS
- 머신러닝
- HTML
- c++
- c
- 자료구조 복습
- BOJ
- SWEA
- Python
- The Loard of BOF
- hackctf
- 웹페이지 만들기
- 숙명여자대학교 정보보안동아리
- WarGame
- siss
- 풀이
- lob
- 파이썬
- hackerrank
- PHP 웹페이지 만들기
Archives
- Today
- Total
혜랑's STORY
[HackerRank] The Full Counting Sort 본문
5주차 자료구조 복습 문제
Prepare > Algorithms > Sorting
풀이
Counting Sort의 응용 문제이다. Counting Sort의 알고리즘은 다음과 같다.
1. 0~n 까지의 버켓을 준비한다.
2. 모든 데이터에 대하여 가장 낮은 자리수에 해당하는 버켓에 차례대로 데이터를 저장한다.
3. 0부터 차례대로 버켓에서 데이터를 다시 가져온다.
4. 가장 높은 자리수를 기준으로 하여 자리수를 높여가며 과정을 반복한다.
해당 문제는 2번까지 한 뒤 원소들을 출력하면 된다. 이때 0~ 원소 개수의 절반 값은 데이터를 "-"로 바꿔주어야 한다. n은 최대 100이라고 주어졌으므로 해당 문제를 풀때 필요한 버켓을 100까지 설정하고 코드를 작성하였다.
전체적인 코드는 다음과 같다.
void countSort(vector<vector<string>> arr) {
int cnt, maxAN, temp;
vector<vector<string>> sortlist(100);
cnt = 0;
for(int j=0; j<arr.size(); j++){
temp = stoi(arr[j][0]);
if(cnt < arr.size()/2){
arr[j][1] = "-";
++cnt;
}
sortlist[temp].push_back(arr[j][1]);
}
for(int i=0; i<100; i++){
for(int j=0; j<sortlist[i].size(); j++)
cout << sortlist[i][j] << " ";
}
}
실행 결과는 이렇다.
'2021 SISS 21기 활동 > 2학기 C' 카테고리의 다른 글
[HackerRank] Running Time of Algorithms (0) | 2021.11.08 |
---|---|
[HackerRank] Strong Password (0) | 2021.11.08 |
[HackerRank] Correctness and the Loop Invariant (0) | 2021.10.06 |
[HackerRank] Combo Meal (0) | 2021.10.01 |
[HackerRank] Electronics Shop (0) | 2021.10.01 |