C언어/백준 문제풀이

코딩하는 대학생에서 개발자까지
백준(S4) 1026번: 보물 (C언어 C11 C99)
코드를 보기전에: 이 문제는 정말 심술궂은 그리디 알고리즘 문제다. 코드만 무책임하게 올려놓으면 이해하지말고 답이나 봐 이렇게 버릇없어 보이기 때문에 하나 하나씩 설명하겠다. 입력 :첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다. 이렇게 문제를 보고 알아야 하는것들이 있다. 1. N은 50보다 작거나 같은 자연수이다. 2. A와 B각 원소는 100보다 작거나 같은 음이 아닌 정수다. 이렇게 두가지는 꼭 알아야한다. 문제를 보면 B의 수를 재배열 하지말고 A의 수를 재배열해서 최솟값을 출력하라고 한다. 문제를 보자마자 내..
백준(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 ..
백준(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..
백준(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
백준(S5) 4673번: 셀프넘버 (C언어 C11 C99)
코드를 보기전에: 나는 이 문제를 배열을 이용해 쉽게 풀었다. 배열을 0으로 초기화 시킨 뒤에 셀프 넘버 아닌 수에는 -1 저장하면 쉽게 구분할수 있다. 그리고 1, 10, 100, 1000의 자리 숫자 각각의 값을 구하는것도 중요한 문제였다 코드 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 32 33 34 35 36 37 38 39 40 41 42 43 44 #include int num[10000]; // 나는 문자열을 이용해 푸는 방법을 생각해봤다. int result(int x); int main() { int res; for (int a = 1; a
코딩하는_대학생
'C언어/백준 문제풀이' 카테고리의 글 목록 (2 Page)