본문 바로가기
백준 2275번 C/C++ www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 이번 문제를 보고 처음 생각한 풀이법은 재귀함수였습니다. 그렇게 재귀함수를 적으며 든 생각은 굳이 재귀함수로 사용하지 않고 풀어도 풀리겠는걸..? 이라는 생각이 들어서 재귀함수를 지우고 그냥 main함수 안에서 모든 것을 해결했습니다. 반복문을 많이 쓰지 않고 풀고 싶었으나 1차적으로 문제에 대한 답이 나오는 방향을 선택을 하였고 teseCase가 그렇게 많지 않아서 그런지 시간 초과는 나오지 않았습니다. 제 코드는 다음과 같습니다. #define _.. 2021. 2. 27.
백준 2805번 C/C++ www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 이 문제를 풀 때 가장 먼저 만들었던 코드이다, 이 문제의 난이도가 실버인데 실버가 이렇게 쉽게 풀릴리 없다고는 생각했지만 역시나 그럤다. 틀렸습니다가 아닌 시간 초과가 나왔고 다른 방식을 채택하기로 하였다. #define _CRT_SECURE_NO_WARNINGS #include //나무 M미터가 필요하다. //절단기 작동 원리: 절단기에 높이 H를 지정한다. 그러면 톱.. 2021. 2. 24.
백준 10250번 C/C++ 이번에는 옆에 있는 친구가 이 문제를 풀고 있다길래 같이 풀어본 문제입니다. www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 문제에 들어가자마자 그림이랑 글이랑... 많아서 하기 싫어지는 문제였지만 그냥 했습니다. 나름 문제에 나오는 이유도 귀엽고 글도 이해하기 쉽게 나타나져 있어서 좋았습니다. 문제를 간단하게 요약을 해보면 '엘리베이터에 가장 가까이 있는 방에 남아있는 방이 있으면 들어가고 싶다'입니다. 가장 가까이이니까 가장 낮은 층을 더 선.. 2021. 2. 16.
백준 10989 C/C++ www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 바로 전 포스팅이 수 정렬하기 2였습니다. 알아보니 수 정렬하기 3도 있어서 하는김에 비슷할 것 같아서 그냥 수 정렬하기 2에 있는 그대로 제출을 하였습니다. 하지만 제출을 하고 나니 메모리 초과가 떴었습니다. 메모리 초과...? 한번도 떴었던 적이 없었던 사항인데 뭐지 싶어서 메모리 초과를 검색을 하고 이러한 상황을 겪은 다른 사람들의 글들을 읽어 보았습니다. www.acmicpc.net/board/view/21587 글 읽기.. 2021. 2. 16.
백준 2751번 C/C++ www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 이 문제는 제가 알고리즘 공부에 올렸었던 merge sort를 활용하면 쉽게 풀 수 있습니다. 하지만 제가 올렸던 그대로 merge sort를 사용하면 아마 풀리지 않으실 것입니다. 그 이유는 배열의 크기 때문인데요. 배열의 크기가 충분하지 않아서 그렇습니다. 제가 풀었던 코드는 다음과 같습니다. #define _CRT_SECURE_NO_WARNINGS #include int b[10000000];.. 2021. 2. 15.
백준 2292번 C/C++ 오늘은 설날입니다. 설 같은 명절에도 코딩으로 시작해야 한 해 동안 노력을 할 수 있겠죠..? www.acmicpc.net/problem/2292 [ 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net ](https://www.acmicpc.net/problem/2292) 이번에 걸린 문제는 매우 쉬운 문제였습니다. 규칙만 찾는다면 누구나 쉽게 풀 수 있는 문제였습니다. 굳이 이런 문제를 찾지는 않으실 것 같지만 일단 규칙 먼저 말씀드리겠습니다. 문제에 있는 그림이 매우 복잡해보여서 풀기 싫어보기지만 규칙성을 찾으면 코딩.. 2021. 2. 12.
백준 2231번 C/C++ 이 문제가 조금 글이 이상하게 적혀있어서 이해를 못해서 블로그 글을 찾는 사람이 많을 것 같아서 먼저 이렇게 문제 이해를 도와드리겠습니다. acmicpc.net/problem/2231 [ 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net ](http://acmicpc.net/problem/2231) 예시에서 245의 분해합이 256이라고 한다. 245 + 2 + 5 + 6이라서 256이다. 이 256을 분해합으로 가지는 가장 작은 수를 구하라는 것이 이 문제의 물음이다. 참고로 25.. 2021. 2. 8.
백준 2614번 C/C++ 먼저 코드부터 올리겠습니다. #define _CRT_SECURE_NO_WARNINGS #include int list[1000000] = { 0, }; int main() { int n; //n장의 카드, 1이 제일 위 n이 제일 아래인 상태이다. scanf("%d", &n);//n값 받음. for (int i = 1; i 2021. 2. 8.
merge sort - 병합 정렬 정리 이번에 알고리즘 공부를 하며 알게 된 merge sort에 대해서 정리를 해보겠습니다. 이 sort를 이해하기 위해서는 기본적으로 재귀함수에 대해서 알고 계셔야합니다. 재귀함수란 함수 자신이 자신을 다시 부르는 함수를 의미합니다. 그리고 재귀함수 내에서 정해진 return에 알맞은 조건을 만족하게 되면 return을 하여 값을 도출하는 형태입니다. 글로만 설명하니 너무 어려운것 같아서 재귀함수부터 간단히 그림으로 설명드리겠습니다. 이처럼 자신의 복사본을 불러서 계산을 하고 return되는 조건에 알맞으면 return이 되는 형식을 재귀함수라고 부른다. 검은 글자가 자신의 복사본을 늘려가는 과정이고 붉은 글씨가 int값이 정해져서 return되고 있는 상황입니다. 처음으로 이렇게 그림을 그려서 설명을 해봤.. 2021. 2. 7.