C++25 C++ 2869 달팽이는 올라가고 싶다 while문으로 풀이하면 직관적이고 쉽게 풀이할 수 있으나, 최댓값 때문에 시간초과로 풀이가 틀린다. 그래서 그냥 수학적인 식으로 접근해서 풀어야한다. 달팽이가 V-A만큼만 올라가면 다음날 A만큼 더 올라가면 되므로 사실상 목표높이는 V-A이다. 목표 : V-A 하루 올라가는 양 : A-B 따라서 걸리는 날짜 : (V-A)/(A-B) 여기에 (V-A)/(A-B)의 나머지가 0 이면 다음날 딱 A만큼 올라가주면 되기 때문에 day에 +1을 해줘야하고 (V-A)/(A-B)의 나머지가 0이 아니면 다음날 A만큼 올라가도 하루가 부족하기 때문에 day.에 + 2를 해줘야한다. 따라서 걸리는 날짜로 (V-A)/(A-B)+1를 설정해주고 (V-A)/(A-B)의 나머지가 0이 아닌 경우에 +1을 해주는 식으로 풀이했.. 2022. 7. 2. C++ 2798 블랙잭 처음에 'M과 차이가 가장 적은 숫자 3개'의 합라고 잘못 이해해 해맸다. 문제에서 요구하는 것은 M과 차이가 가장 적은 '숫자 3개의 합'이다. (M보다 작다는 조건 하에) 따라서 주어진 카드의 숫자중에서 3개를 뽑아 나올 수 있는 모든 조합의 합을 구하고, 그 조합 중에 가장 작은 합을 구하면 된다. 나는 조합의 합을 구한 후 M과의 차이값을 구해 sum 이라는 벡터에 담아 최소값을 구하고 그 최소값을 다시 M에서 빼줘서 원래의 값을 출력하게 했다. #include #include #include using namespace std; int main() { int N, M; cin >> N >> M; int cards[100]; vector sum; //입력 for (int i = 0; i < N; .. 2022. 7. 1. C++ 11050 이항계수 해당 수식을 계산하기 위해 팩토리얼을 함수로 구현했다. 팩토리얼만 구현하면 어렵지 않게 풀 수 있는 문제이다. #include using namespace std; int Factorial(int num) { int result = 1; for (int i = num; i >0; i--) { result *= num; num--; } return result; } int main() { int N, K; cin >> N >> K; int ans = Factorial(N) / (Factorial(K) * Factorial(N - K)); cout 2022. 6. 29. C++ 10773 제로 벡터를 활용하면 쉽게 풀 수 있는 문제였다. 입력된 값이 0 이면 pop_back을 두 번 실행해 0과 이전 숫자를 삭제해주면 된다. #include #include using namespace std; int main() { int K; cin >> K; vector num; for (int i = 0; i > a; num.push_back(a); if (a == 0) { num.pop_back(); num.pop_back(); } } int result=0; for (int i = 0; i < num.size(); i++) result += num[i]; cout 2022. 6. 28. 이전 1 2 3 4 5 6 7 다음