c언어 163

백준(C) 2750번 수 정렬하기 풀이

C로 구현한 2750번 수 정렬하기 문제 풀이입니다. https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net #include int main() { int input[1001]; int num, min, index, temp; scanf("%d", &num); for(int i=0; i

퀵정렬(Quick Sort)

퀵정렬은 특정한 배열이 있을 때 그 배열의 원소들을 반복적으로 분할하는 것이다. 즉, 퀵정렬은 특정한 피벗값(기준값)을 기준으로 왼쪽과 오른쪽으로 나누기 때문에 '분할 정복'이라고도 부른다. [퀵 정렬의 시간 복잡도] 퀵 정렬의 시간 복잡도는 O(N * logN) 이다. 예를 들어, 1 2 3 4 5 6 7 8 9 10 와 같이 10개 수가 존재할 때 선택 정렬을 사용하게 되면 O(N^2) 이기 때문에 10 * 10 = 100 이 나온다. 하지만, 퀵 정렬을 사용하면 1 2 3 4 5 와 6 7 8 9 10 으로 분할하여서 N^2 이라고 했을 때 (5 * 5) + (5 * 5) = 50 이 나오기 때문에 결과적으로 훨씬 적은 수만큼 연산을 수행하게 된다. 이렇게 수를 반으로 나누는 과정은 2씩 계속 나눈..

삽입정렬(Insertion Sort)

삽입정렬은 각 원소를 필요할 때만 적절한 위치에 삽입하는 것이다. 1 10 5 8 7 6 4 3 2 9 --> 가장 앞에 있는 1이 가장 작은 수이기 때문에 넘어간다. 1 10 5 8 7 6 4 3 2 9 --> 10은 앞에 있는 원소인 1보다 크기 때문에 유지하고 넘어간다. 1 10 5 8 7 6 4 3 2 9 --> 1 5 10 8 7 6 4 3 2 9 --> 5는 앞에 있는 원소 중 1과 10 사이에 들어가야 적절하기 때문에 삽입한다. 1 5 10 8 7 6 4 3 2 9 --> 1 5 8 10 7 6 4 3 2 9 --> 8은 앞에 있는 원소 중 5와 10 사이에 들어가야 적절하기 때문에 삽입한다. . . . 1 2 3 4 5 6 7 8 10 9 --> 1 2 3 4 5 6 7 8 9 10 -->..

버블정렬(Bubble Sort)

버블정렬은 옆에 있는 원소와 비교하여 더 작은 값을 계속해서 앞으로 보내는 것이다. [수행1] 1 10 5 8 7 6 4 3 2 9 --> 1과 10을 비교하고 1이 더 작기 때문에 넘어간다. 1 10 5 8 7 6 4 3 2 9 --> 1 5 10 8 7 6 4 3 2 9 --> 10과 5를 비교하고 5가 더 작기 때문에 앞으로 옮긴다. 1 5 10 8 7 6 4 3 2 9 --> 1 5 8 10 7 6 4 3 2 9 --> 10과 8을 비교하고 8이 더 작기 때문에 앞으로 옮긴다. 1 5 8 10 7 6 4 3 2 9 --> 1 5 8 7 10 6 4 3 2 9 --> 10과 7을 비교하고 7이 더 작기 때문에 앞으로 옮긴다. . . . 1 5 8 7 6 4 3 2 10 9 --> 1 5 8 7 6 ..

선택정렬(Selection Sort)

선택정렬은 가장 작은 것을 선택해서 제일 앞으로 보내는 것이다. 1 10 5 8 7 6 4 3 2 9 --> 가장 앞에 있는 1이 가장 작은 수이기 때문에 정렬이 이루어졌다. 1 10 5 8 7 6 4 3 2 9 --> 1 2 5 8 7 6 4 3 10 9 --> 나머지 9개의 수 중에 가장작은 수인 2와 10의 위치를 바꾼다. 1 2 5 8 7 6 4 3 10 9 --> 1 2 3 8 7 6 4 5 10 9 --> 나머지 8개의 수 중에 가장 작은 수인 3과 5의 위치를 바꾼다. 1 2 3 8 7 6 4 5 10 9 --> 1 2 3 4 7 6 8 5 10 9 --> 나머지 7개의 수 중에 가장 작은 수인 4와 8의 위치를 바꾼다. 1 2 3 4 7 6 8 5 10 9 --> 1 2 3 4 5 6 8 ..

백준(C) 1712번 손익분기점 풀이

C로 구현한 1712번 손익분기점 구하기 문제 풀이입니다. https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net #include int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); if(c

백준(C) 2292번 벌집 풀이

C로 구현한 2292번 벌집 구하기 문제 풀이입니다. https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net #include int main() { int input, min=2, diff=5, count=2; scanf("%d", &input); if(input == 1){ printf("%d", input); return 0; } while(1){ if(input>=min && input

백준(C) 2941번 크로아티아 알파벳

C로 구현한 2941번 크로아티아 알파벳 구하기 문제 풀이입니다. https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net #include int main() { char input[101]; int count = 0; scanf("%s", input); for(int i=0; input[i]!='\0'; i++) { if(input[i] == 'c' || input[i]=='s' || input[i]=='z'){ ..

백준(C) 5622번 다이얼 풀이

C로 구현한 5622번 다이얼 구하기 문제 풀이입니다. https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net #include int main() { int num[] = {3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10}; char call[26]; int result = 0; scanf("%s", call); for(int i=0; call[i]!='\0'; i++) { result = result + num[call[i]-65] ; } printf("%d", result); } ..