C++28 4796 : 캠핑 (C++) 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 그리디 알고리즘을 이용하여 푸는 문제로 총 휴가일 수에서 캠핑장을 이용하는 일수와 연속해서 이용하지 못하는 일의 수를 빼면서 계산하면 된다. 총 휴가일 수에서 캠핑장을 연속으로 이용하는 날의 수를 빼고 그 다음 이용하지 못하는 날을 뺀다. 그 다음 결과값에 캠핑장을 이용한 날을 더하고 총 휴가일의 수가 캠핑장을 이용할 수 있는 일자 보다 작아지면 while문을 나와 총 휴가일의 수가 음수면 더하지 않고 음수가 아니면 결과값에 남은 일의 수를 더한다. #in.. 2021. 1. 19. 10799 : 쇠막대기 (C++) 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net - 스택을 이용하여 푸는 문제이며 '()'가 들어오면 안에 스택안에 있던 사이즈를 측정하여 결과 값에 더하고 ')'가 입력되면 스택에서 pop을 하고 결과값에 1을 더한다. #include #include #include using namespace std; int main() { string stick; stack t; int result = 0; cin >> stick; for(int i = 0; i < stick.size(); i++) { if(stick[i] == '.. 2021. 1. 18. 10870 : 피보나치 수 5 (C++) 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net #include using namespace std; int fibo(int n) { if(n == 0) return 0; else if (n == 1) return 1; else return fibo(n-1) + fibo(n-2); } int main() { int n; scanf("%d", &n); printf("%d", fibo(n)); return 0; } 순환(recursion)또는 재귀로 푸는 피보나치 수열 피보나.. 2020. 12. 21. 10872 : 팩토리얼 (C++) 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net #include using namespace std; int factorial(int n) { if(n 2020. 12. 20. 2751 : 수 정렬하기 2 (C++) 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net #include #include using namespace std; int main() { int size = 0; cin >> size; int a[size]; for(int i = 0; i > a[i]; } sort(a, a + size); for(int i = 0; i < size; i++) printf("%d\n", a[i]); return 0; } c++에 내장된 sort함수를 사용하였으며 최악의 상황에.. 2020. 11. 21. 2798 : 블랙잭 (C++) 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는다. 합이 M을 넘지 않는 카드 3장을 찾을 수 있 www.acmicpc.net #include using namespace std; int main() { int N, M; int Max = 0; int Sum = 0; cin >> N >> M; int card[N]; for(int i = 0; i > card[i]; } for(int i = 0; i < N-2; i++) { for(int j = i + 1; j < N-1; j++) { for(int k = j + 1; k .. 2020. 11. 12. 1152 : 단어의 개수 (C++) 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net #include #include using namespace std; int main() { string S; int count = 1; getline(cin, S, '\n'); if(S.size() == 0 || (S.size() == 1 && S[0] == ' ')) { cout 2020. 11. 12. 10809 : 알파벳 찾기 (C++) 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net #include #include using namespace std; int main() { int order[26]; fill(order, order + 26, -1); string S; cin >> S; for(int i = 0; i 2020. 11. 8. 11720 : 숫자의 합 (C++) 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net #include #include using namespace std; int main() { int a; string b; cin >> a >> b; int sum = 0; for(int i = 0; i < a; i++) { sum += b[i] - 48; } cout 2020. 11. 5. 이전 1 2 3 4 다음