분류 전체보기311 [백준] 2217번 문제풀이 문제 : www.acmicpc.net/problem/2217 알고리즘 : 1. N개를 입력 받음. 2. Merge Sort로 정렬 (오름차순) 3. 정렬된 값 x index의 MAX를 구함. 4. Max출력 Merge Sort 구현 후, Over Flow가 발생하여서 원인을 분석해보니, merge 함수 내부에서 100,000개의 배열을 선언하다 보니 그런 것 같았다. 그래서 내부 temp배열을 전역 변수로 선언하니, 문제없이 동작하였다. 확실히 빠르긴 하지만, 저장공간이 필요하다는 단점이 있다. 첫 번째 코드는, MAX를 Merge Sort를 이용해서 구하는 것이고, 두 번째 코드는, MAX를 for문을 이용해서 구하는 것이다. 첫 번째 코드는 Merge Sort를 이용하지만, for문으로 배열에 넣어주.. 2021. 4. 7. [백준] 1541번 문제풀이 문제 : www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 알고리즘 : flag를 이용해서, -가 나오면 다음 연산은 sum을 -시키면 됨. 기존에 짰던 코드이다. 보기 복잡하고 코드 재사용도 많다. 일단 풀고보자 라는 느낌으로 코딩을 하였다. 근데 잘했던 점은, 성급하게 제출하지 않고 테스트케이스를 여러개 만들어서 테스트 해보고, 디버깅 후에 제출하였다. 짞짞 실력이 늘고있는것 같다. #define _CRT_SECURE_NO_WARNINGS #inclu.. 2021. 4. 6. [C언어] 팩토리얼을 반환하는 함수 만들기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #define _CRT_SECURE_NO_WARNINGS #include int factorial(int n); int main(void) { int n; scanf("%d", &n); printf("%d ", factorial(n)); return 0; } int factorial(int n) { if (n == 1) { return 1; } return n * factorial(n - 1); } cs 설명이 필요 없을 정도로 간단한 코드이다. n은 1까지 재귀적으로 호출 된 후, n*n-1 을 하면서 return 된다. 2021. 4. 6. [백준] 13305번 문제풀이 문제 : www.acmicpc.net/problem/13305 알고리즘 : 1. Min보다 작은 값이 나오면, 갱신하면서 km와 cost를 곱함. 2. 만약 Min과 같은 값이 나오면, 나머지 남은 거리과 min을 곱함. 3. 이 모든 곱의 합을 출력. 너무너무 간단한 문제이다. 엄청 간단하게 풀 것으로 예상했고, 처음에는 1번을 생각하지 못하고, 2번만 생각해서 코딩을 하였는데, 제출 해보니 Fail이 나왔다. 그래서 TestCase를 다시 세심히 분석해보니, 1번 부분을 놓쳐서 추가를 하였다. 처음부터 1,2번을 생각을 했어야 했다. 알고리즘이 만들어 졌다고 성급하게 코딩을 해서는 안되는것 같다. 코드 : #define _CRT_SECURE_NO_WARNINGS #define MAX 100000 #i.. 2021. 4. 6. [백준] 11399번 문제풀이 문제 : www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 풀이방법 1. 시간을 기준으로 Sorting. (나는 mergeSort를 이용함) 2. 앞에서 부터, 시간을 더함(sum1). 시간을 더한 값을 또 더함(sum2) - 아래코드 참고 int sum1, sum2; sum1 = sum2 = 0; for (int i = 0; i < n; i++) { sum1 += arr[i]; sum2 += sum1; } 코드 : #define _CRT_SECURE_NO_WARNINGS #include .. 2021. 4. 5. [백준] 16953번 문제풀이 기존에 나는 B에서 나누고, 빼서 A가 된다면 Count를 출력하고, 되지 않는다면 -1 를 출력하는 알고리즘을 계획했었다. 계획에는 전혀 문제가 없어보였다. 그래서 나온 코드가 아래와 같다. #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int a, b; scanf("%d %d", &a, &b); int count = 0; while (b > a) { if (b % 2 == 0) { b = b / 2; } else { b = b / 10; } count++; } if (b == a) printf("%d", count + 1); else printf("-1"); return 0; } 하지만 Pass가 되지 않았다. 1 a) { if (b % 2 =.. 2021. 4. 5. 이전 1 ··· 32 33 34 35 36 37 38 ··· 52 다음