본문 바로가기

C++105

[C++] 백준 10773번 : 제로 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 문제 풀이 기본적인 스택 문제이다. 느낀 점 따로 느낀 점이 없는 문제이다. 코드를 깔끔하게 신경 썻다는 정도..? 코드 #include #include using namespace std; int k, n, sum = 0; stack s; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> k; whil.. 2021. 7. 21.
[C++] 백준 1676번 : 팩토리얼 0의 개수 https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 풀이 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 만드는 것이다. 1부터 차근차근하나 곱하다 보면 규칙성을 알 수 있다. 바로 10의 값이 곱해질 때마다 1의 자리에 0이 추가된다. 고로 이 문제는 2와 5의 갯수를 따지는 문제이다. 하지만 2의 개수는 5의 개수보다 절대적으로 많을 수밖에 없다. 문제를 쉽게 만들기 위해서 5의 개수만 따져주면 된다. 느낀 점 규칙성을 찾긴 했는데 구현하는 데에 있어서 살짝 해맨 것 같다. 오랫동안 코딩을 쉬었더니 많이 감.. 2021. 7. 19.
[C++] 백준 9375번 : 패션왕 문희조 https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 문제 풀이 문제에서 의상 종류에 따른 개수가 가장 중요하다. 각 의상종류에 +1 함값을 곱한 뒤에 나온 최종 값에서 -1을 해준 것이 정답이다. +1은 해당 종류의 의상을 안 입을 경우이고 -1은 모두 안 입을 경우이다. 예를 들어 안경 2, 상의 2, 바지 3이면 (2 + 1)(2 + 1)(3 + 1) .. 2021. 7. 19.
[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.