C언어

코딩하는 대학생에서 개발자까지
백준(S5) 1427번: 소트인사이드 (C언어 C11 C99)
코드를 보기 전에: 많은 사람들이 수를 입력 받았을때 각 자리를 어떻게 구하는지 고민을 할것이다. 일일이 나누기 그리고 나머지를 구하면서 각 자리를 구할수도 있지만, 1,000,000,000은 그렇게 하기는 너무 큰 수이다. 그러므로 문자열로 입력받는것도 방법이라고 알려주고 싶다. 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 #include #include int main() { char num[11] = { 0, }; // 최대가 1,000,000,000이므로, 문자열의 크기를 11로 잡았다. scanf("%s", num); // 문자열은 입력받을때 &을 적지 않아도 된다. int size = strlen(num); int ..
C언어 카운팅 정렬 단순정리 & 백준(S5) 수 정렬하기 (C언어 C11 C99)
정렬 알고리즘 중 가장 빠른 정렬. 정렬 함수의 속도는 O(N)이다. 지금까지 다른 함수들은 데이터를 위치를 바꿔가며 정렬했지만, 정렬 함수는 데이터의 크기를 기준으로 개수만 세면 되기 때문에 다른 정렬들보다 시간을 많이 아낄 수 있다. 1 2 3 4 5 6 7 8 9 for (int a = 0; a max) { max = numbers; } countings[numbers - 1]++; } cs 이렇게 입력을 하면서 바로 데이터의 크기를 기준으로 갯수를 셀 수 있다. 개수를 센 다음에는 밑에 나와있는 코딩처럼 데이터 크기를 저장한 배열을 출력하면 된다. 1 2 3 4 5 6 7 8 for (int a = 0; a
백준(S5) 2751번: 수 정렬하기 2 (C언어 C11 C99)
코드를 보기 전에: 이 문제는 퀵 정렬 함수를 이용해서 문제를 풀 수 있다. 정렬 함수에는 많은 정렬이 있지만, 버블 정렬, 삽입 정렬은 배열 하나하나를 바꾸는 것이기 때문에 시간이 초과된다. 퀵 정렬 함수 정리:https://solution-is-here.tistory.com/30 정보) qsort 함수 (C언어 C11 C99) 정렬문제를 풀때는 보통 이중 반복문으로 쉽게 풀수 있으나, 배열의 크기와 숫자가 커지면 시간초과가 나온다. 그럴때는 qsort함수를 사용하면 된다. qsort함수는 퀵 정렬 함수라고도 불린다. stdlib solution-is-here.tistory.com 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2..
C언어 qsort 함수 (C언어 C11 C99)
정렬문제를 풀때는 보통 이중 반복문으로 쉽게 풀수 있으나, 배열의 크기와 숫자가 커지면 시간초과가 나온다. 그럴때는 qsort함수를 사용하면 된다. qsort함수는 퀵 정렬 함수라고도 불린다. stdlib.h를 헤더로 필요로 하고, qsort(정렬할 배열, 요소개수, 요소크기, 비교함수); 이렇게 구성된다. 1 qsort(num, sizeof(num) / sizeof(int), sizeof(int), compare); cs 비교함수는 오름차순으로 할때는 a>b일때는 return 양의 정수, a
백준(B1) 2750번: 수 정렬하기 (C언어 C11 C99)
코드를 보기 전에: 이 문제는 정수가 음의 정수와 양의 정수로 이루어져있다는 사실만 알면 쉽게 풀수 있는 문제다. 필자는 이중반복문을 이용해, 오름차순으로 정리했다. 1 2 3 4 5 6 7 8 for (int a = -1000; a
백준(S5) 1436번: 영화감독 숌 (C언어 C11 C99)
코드를 보기 전에: 이 문제는 브루트포스의 대입하는 사고와 수학적 사고가 같이 필요한 문제였다. 666이 들어간 숫자를 찾으려면 1000으로 나눠서 나머지가 666이 나와야 한다. 6660같은 경우에는 1000으로 나눈 나머지가 666이지 않으므로, 수학적 사고도 필요하다. 이럴때는 나누기 10을 하면 된다. 코드: 1234567891011121314151617181920212223242526#include #include int main(){ int res = 665; int num; scanf("%d", &num); int a = 0; while (1) { if (a == num) { printf("%d", res); break; } res++; for (int i = 0; i
코딩하는_대학생
'C언어' 카테고리의 글 목록 (3 Page)