BOJ157 [C++] 백준 1010번 : 다리 놓기 https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 문제 풀이 간단한 이항정리 문제이다. 이항 정리만 이해하고 있으면 쉽게 풀 수 있다. 함수 Solution 이항 정리를 구현한 함수이다! 값의 범위가 크므로 long long으로 선언해준다. 느낀 점 솔직히 처음에는 당황해서 생각해내는데 오래 걸렸다. 구글링을 통해서 참고를 해보니 동적 계획법으로 푸는 분들이 많았는데 DP로 풀라는 의도가 아닌 것 같아서 간단하게 풀어보았다. 코드 #include.. 2021. 7. 19. [C++] 백준 11051번 : 이항 계수 2 https://www.acmicpc.net/problem/11051 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 문제 풀이 배열 DP에 이항 계수를 저장하면 된다. 이때 이항 계수의 값은 파스칼의 법칙을 이용하면 쉽다! 느낀 점 고등학교 때 배웠던 파스칼의 법칙을 이렇게 쓸 줄은 몰랐다. 처음에는 파스칼의 법칙을 기억하지 못해서 없는 코드로 구현했는데 틀려서 약간의 구글링으로 해결했다.. ^.^ 코드 #include using namespace std; int n, k; long long dp[1002][1002] = { 0, }; void solution() { for (in.. 2021. 7. 11. [C++] 백준 3036번 : 링 https://www.acmicpc.net/problem/3036 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net 문제 풀이 기약 분수 형태로 출력하는 것만 신경 쓰면 되는 문제이다. 기약 분수로 만들기 위해서는 최대공약수로 나눠주면 된다! 결국 최대공약수를 구하는 문제이다! 함수 Solution 첫 번째 원이 기준이니 2번째 원부터 따진다. 만약에 최대공약수가 없다면 있는 그대로 출력한다. 느낀 점 유클리드 알고리즘만 알고 있다면 쉽게 해결할 문제이다! 코드 #include using namespace std; int n; int radiu.. 2021. 7. 3. [C++] 백준 2981번 : 검문 https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net 문제 풀이 수학적인 사고를 요구하는 문제이다!! 문제에서 찾아야 하는 M은 같은 나머지(이하 R)를 만드는 숫자이다. 어떤 값 arr[i]를 M으로 나눴을 때 나머지가 R이 나오면 식은 다음과 같을 것이다. arr[i] = M × (arr[i] / M) + R 그렇다면 다음 값들은 arr[i+1] = M × (arr[i+1] / M) + R 이런식으로 이어진다. 여기서 R을 없애주기만 한다면 M을 구하기가 더 쉬.. 2021. 7. 3. [C++] 백준 13305번 : 주유소 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 문제 풀이 값들을 입력받고 최솟값을 최신화해서 두 도시 사이의 거리와 최솟값을 곱해서 결과에 더해주면 된다. 여기서 최솟값임을 따지는 것이 그리디 알고리즘의 핵심이다! 함수 Solution i번째 값이 최솟값보다 작으면 최솟값을 최신화한다. 이후 최솟값과 i번째 거리와 곱해서 ans에 더한다. 느낀 점 처음에 프로그래머답지 못하게 문제를 너무 1차원적으로 접근했다. 각 거리 값을 더.. 2021. 7. 1. [C++] 백준 11399번 : ATM https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 풀이 배열에 값들을 입력받고 정렬한다. 현재 최적의 값은 대기시간이 가장 짧을 때 이므로 처리시간이 짧은 순서대로 오면 되기 때문에 정렬하는 것이다. 두 가지 풀이법이 있다. 1. 대기 시간을 따로 계산해서 총 걸린 시간에 더한다. 2. 덧셈이 반복되기 때문에 총 걸린 시간은 i번째 값 * n-i 번이다. 느낀 점 쉬운 문제였지만 제출 이후에 다르게 구성할 방법을 생각해보았다. 코드 #include #include usi.. 2021. 6. 28. 이전 1 ··· 20 21 22 23 24 25 26 27 다음