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
- c
- lob
- CSS
- 숙명여자대학교 정보보안동아리
- siss
- 숙명여자대학교 정보보안 동아리
- 자료구조 복습
- XSS Game
- BOJ Python
- hackctf
- 파이썬
- SWEA
- 풀이
- BOJ
- 백준
- C언어
- HTML
- 드림핵
- 기계학습
- c++
- The Loard of BOF
- 웹페이지 만들기
- Python
- PHP 웹페이지 만들기
- Sookmyung Information Security Study
- 생활코딩
- hackerrank
- Javascript
- WarGame
- 머신러닝
Archives
- Today
- Total
혜랑's STORY
[BOJ_C] 10989번 본문
- 문제
- 풀이
#include <stdio.h>
#include <stdlib.h>
int main(){
int n;
scanf("%d",&n);
int* num = (int*)malloc(sizeof(int)*n);
for(int i=0; i<n; i++)
scanf("%d", &num[i]);
for(int i=0; i<n; i++){
for(int j=0; j<n-1; j++){
if(num[j]>num[j+1]){
int temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
for(int i=0; i<n; i++)
printf("%d\n",num[i]);
return 0;
}
처음엔 그냥 아무생각없이 구현이 가장 간단한 버블정렬로 문제를 해결하고자 하였다. 그러나 메모리가 초과되었다는 답을 얻게 되었다. 다른 방법을 찾아보고자 인터넷을 열심히 찾아 보았는데, 그 중 가장 괜찮아 보이는 방법을 가져와 보았다.
바로 flag를 이용하는 방법이다. 코드는 다음과 같다.
#include <stdio.h>
#include <stdlib.h>
int main(){
int n, num;
int flag[10001] = {0, };
scanf("%d",&n);
for(int i=0; i<n; i++){
scanf("%d",&num);
flag[num]++;
}
for(int i=0; i<10001; i++){
if(flag[i] != 0){
for(int j=0; j<flag[i]; j++)
printf("%d\n", i);
}
}
return 0;
}
해당 숫자에 해당하는 인덱스의 값을 1 증가시켜 주고, 출력할 때, 0이 아닌 즉, 값이 들어있는 인덱스를 출력해주면 오름차순으로 정렬이 된 것과 같은 결과를 얻어낼 수 있다.
- 실행결과
'무지성 공부방 > 알고리즘 해결' 카테고리의 다른 글
[BOJ_C] 10828번 : 스택, 10845번 : 큐 (0) | 2021.03.02 |
---|---|
[BOJ_C] 1259번 (0) | 2021.02.26 |
[BOJ_C] 1929번 (0) | 2021.02.08 |
SW Expert Academy [D1] (0) | 2020.09.17 |
[BOJ_Python] 6603번 (0) | 2020.08.05 |