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
- 코드엔진 베이직
- malware
- bob
- CodeEngn Basic 5
- 사회분업론
- 코드엔진
- 논문리뷰
- CodeEngn
- codeengn basic rce 01
- BoB 12기 최종합격 후기
- 자살론
- 에밀 뒤르켐
- Best of the Best
- 코드엔진 basic 5
- 리버싱
- BoB 12기
- 철학
- h4ckinggame
- 사회적 사실
- CodeEngn Basic 01
- 디지털 포렌식 트랙
Archives
- Today
- Total
woonadz :)
[백준/C언어] 정렬_2750번_nabi 본문
반응형
이 정렬 문제에 데이터는 최대 1000개로 작으니 단순 정렬과 버블 정렬을 사용하겠다. 버블 정렬은 시간이 오래 걸리는 편이지만 코드 구현이 쉬워서 많이 쓰인다고 한다.
관련 개념들은 아래 포스팅을 참고해주셨으면 한다.
[개념정리]정렬_nabi
기록용 3줄 TMI 시험 공부를 하면 할수록 빨리 스터디를 다시 시작하고 싶은 마음이 커진다. 요새 갑자기 든 생각인데 공부를 하려면 항상 겸손해야하는 것 같다. 좀 감성적인 생각인 것 같지만
scorchingnraining.tistory.com
먼저 선택 정렬 코드이다.
#include <stdio.h>
int main() {
int N,cha,min,i,j,k;
scanf_s("%d", &N); //정렬해줄 N개 입력받기
int numArr[1000]; //N을 최대 1000까지 입력 가능하므로 배열 크기도 1000으로 지정
for (i = 0; i < N; i++)
scanf_s("%d", &numArr[i]); //N개 만큼의 숫자 입력받기
for (j = 0; j < N - 1; j++) { //선택 정렬 코드 구현
min = j;
for (k = j + 1; k < N; k++) {
if (numArr[min] > numArr[k])
min = k;
}
cha = numArr[j]; //위치 바꾸기
numArr[j] = numArr[min];
numArr[min] = cha;
}
for (i = 0; i < N; i++)
printf("%d\n", numArr[i]); //오름차순으로 정렬한 결과 출력
return 0;
}
코드 설명은 주석에서 했으니 생략하도록 하겠다.
다음은 삽입 정렬 코드이다.
#include <stdio.h>
int main() {
int N,cha,min,i,j,k;
scanf_s("%d", &N); //정렬해줄 N개 입력받기
int numArr[1000]; //N을 최대 1000까지 입력 가능하므로 배열 크기도 1000으로 지정
for (i = 0; i < N; i++)
scanf_s("%d", &numArr[i]); //N개 만큼의 숫자 입력받기
for (j = 1; j < N; j++) { //삽입 정렬 코드 구현
min = numArr[j];
k = j - 1;
while (k >= 0 && numArr[k]>min) {
numArr[k+1] = numArr[k]; //앞순서와 위치바꾸기
k--;
}
numArr[k + 1] = min;
}
for (i = 0; i < N; i++)
printf("%d\n", numArr[i]); //오름차순으로 정렬한 결과 출력
return 0;
}
사실 삽입 정렬 코드 구현이 좀 힘들어 개념 정리를 참고해 풀었다.
버블 정렬 코드이다.
#include <stdio.h>
int main() {
int N,cha;
scanf_s("%d", &N); //정렬해줄 N개 입력받기
int numArr[1000]; //N을 최대 1000까지 입력 가능하므로 배열 크기도 1000으로 지정
for (int i = 0; i < N; i++)
scanf_s("%d", &numArr[i]); //N개 만큼의 숫자 입력받기
for (int j=0; j<N-1; j++) //버블 정렬 코드 구현
for (int k = 0; k < N-j-1; k++) {
if (numArr[k+1] < numArr[k]) {
cha = numArr[k+1]; //위치 바꾸기
numArr[k+1] = numArr[k];
numArr[k] = cha;
}
}
for (int i = 0; i < N; i++)
printf("%d\n", numArr[i]); //오름차순으로 정렬한 결과 출력
return 0;
}
버블 정렬 코드 구현이 가장 빠르고 쉬웠다. 이래서 많이들 쓰는 알고리즘인가보다 싶었다ㅎㅎ
아래 코드는 뭔지 모르겠지만.. 아무 생각 없이 그냥 풀었을 때의 코드인데 백준에 답으로 제출되길래 함께 업로드한다. 그냥 잡종...? 알고리즘을 구현한게 아닐까 싶다. 혹시 이러한 정렬 종류가 있다면 댓글로 알려주시면 감사하겠습니다.
#include <stdio.h>
int main() {
int N,cha;
scanf_s("%d", &N); //정렬해줄 N개 입력받기
int numArr[1000]; //N을 최대 1000까지 입력 가능하므로 배열 크기도 1000으로 지정
for (int i = 0; i < N; i++)
scanf_s("%d", &numArr[i]); //N개 만큼의 숫자 입력받기
for (int j=0; j<N-1; j++) //정렬 코드 구현
for (int k = j + 1; k < N; k++) {
if (numArr[j] > numArr[k]) {
cha = numArr[j]; //위치 바꾸기
numArr[j] = numArr[k];
numArr[k] = cha;
}
}
for (int i = 0; i < N; i++)
printf("%d\n", numArr[i]); //오름차순으로 정렬한 결과 출력
return 0;
}
(하루에도 몇 번씩 들어오는 블로그이므로 코드에 대한 질문은 댓글로 남겨주시면 빠른 시간 내에 답변하겠습니다.)
끝인사 및 느낀점
사실 과제를 하다가 너무 힘들어서 백준 문제를 풀었는데 시간 가는 줄도 모르고 풀었던 것 같다. 중간대체과제가 2개나 남았기에 오늘 끝인사는 여기서 마치겠다.
반응형
'IT > 백준' 카테고리의 다른 글
[백준/C언어] 직각삼각형_4153번_nabi (0) | 2022.01.14 |
---|---|
[백준/C언어] 스택_10828번_nabi (0) | 2022.01.13 |
[백준/C언어] 정수론 및 조합론_3036번_nabi (0) | 2021.11.08 |
[백준/C언어] 브루트 포스_2798번_nabi (0) | 2021.10.17 |
[백준/C언어] 재귀_2447번_nabi (0) | 2021.10.14 |