전체 글
-
[BOJ][C++] 백준 1436 영화감독 숌CS/Algorithm & Data Structure 2022. 11. 23. 07:13
string.find를 사용하여 666문자열이 존재하는지 브루트포스로 체크했다. #include #include using namespace std; int main() { int N; cin >> N; int number = 0;//브루투포스를 돌 숫자 int cnt = 0; //찾은 개수 while (cnt < N) { number++; string str = to_string(number); if (str.find("666") != string::npos) { //666을 찾으면 cnt++; } } cout
-
[BOJ][C++] 백준 2231 분해합CS/Algorithm & Data Structure 2022. 11. 22. 16:34
브루트포스 문제였다. for문의 i가 정답이 될 후보들이라고 볼 수 있다. i를 1~N전까지 모두 계산해보도록 했다. %10으로 끝자리를 구하고, /10으로 계산한 끝자리를 떼어주며 반복시켜 각 자릿수를 구했다. + 첫 시도 때.. if조건문에서 분해합을 찾았으므로 탈출할 때 break;를 써줬었다.. break;는 해당 루프 단 1개만 탈출한다는 걸 깜빡 했다...그래서 return으로 바꿔줬다. #include using namespace std; int main() { int N; cin >> N; int number, sum; for (int i = 1; i < N; i++) { sum = i; number = i; while (number!=0) { sum += number % 10; numbe..
-
[BOJ][C++] 백준 2798 블랙잭CS/Algorithm & Data Structure 2022. 11. 22. 16:00
3중 for문을 이용한 브루트포스 문제다. (3개의 수를 골라야 하므로 3중 for문을 사용했다.) 합이 M을 넘지 않아야 한 다는 것을 깜빡하고 abs사용해서 절댓값이 가장 작은 걸로 구했었다...바보 #include #include using namespace std; int main() { int N, M, close=0; cin >> N >> M; vector v; for (int i = 0; i > num; v.push_back(num); } int sum=0; for (int i = 0; i < N - 2; i++) { for (int j = i + 1; j < N - 1; j++) { for (int k = j + 1; k < N; k++) { ..
-
[BOJ][C++] 백준 2447 별찍기 -10CS/Algorithm & Data Structure 2022. 11. 22. 15:21
머리가 팽팽 돌아가지 않는 것을 자각한 문제다 후... 어디를 공백으로 둘 건가에 초점을 맞추는 게 좋은 것 같다. 어느 좌표들이 공백인지 규칙성을 찾는 것이다. 9*9그림을 그려보면 (1,1),(1,4),(1,7),(4,1),(4,4),(4,7) 처럼 x좌표%3==1 && y좌표%3==1 인 곳들이 공백이었다. 더 나아가 큰 패턴으로 보았을 때, 패턴상의 가운데 부분이 비게 되고 이 부분을 생각해보면 x좌표/(n/3) % 3 ==1 && y좌표/(n/3) % 3 == 1 인 곳들이 공백이었다. 1,1~n,n각 좌표를 반복문으로 방문할 거고 공백부분을 위의 규칙으로 비워줄거다. 이걸 n을 계속 쪼개줘가면서 3*3패턴까지 반복 그리게 할 것이고, 그 후에 또 재귀함수가 한번 더 쪼개면 n==1이 되므로 더..
-
[BOJ][C++] 백준 11729 하노이의 탑 이동순서CS/Algorithm & Data Structure 2022. 11. 22. 14:43
하노이의 탑은 설계가 딱!! 들어맞아서 알고나면 참 재밌지만 항상 뚝딱 풀어지지는 않는다...ㅠ https://shoark7.github.io/programming/algorithm/tower-of-hanoi 이 분 글을 참고해서 풀었다. 탑1, 탑2, 탑3이 있을 때 - 가장 큰 원판(N)을 제외한 나머지(N-1)을 탑1에서 탑2로 옮긴다. // 이 때 탑3을 활용한다.(거쳐서 옮긴다) - 가장 큰 원판(N)을 탑3으로 옮긴다. - 나머지(N-1)원판들을 탑3에 다시 옮긴다. // 이 때 탑 1을 활용한다. 요 과정을 반복한다. n==1이 되면(제일 작은 원판의 이동 차례) 그냥 옮겨준다. #include #include using namespace std; void Hanoi(int n, int fr..
-
[BOJ][C++] 백준 10870 피보나치 수 5CS/Algorithm & Data Structure 2022. 11. 22. 09:50
문제에서 주어진 Fn = Fn-1 + Fn-2 (n ≥ 2) 식을 참고하여 재귀함수를 만들었다. #include using namespace std; int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; else { return fib(n - 1) + fib(n - 2); } } int main() { int N; cin >> N; cout
-
[BOJ][C++] 백준 10872 팩토리얼CS/Algorithm & Data Structure 2022. 11. 22. 09:09
방법 1. 재귀 #include using namespace std; int factorial(int n) { if (n == 1 || n==0) { return 1; } else { return n * factorial(n - 1); } } int main() { int N; cin >> N; cout N; int result=1; for (int i = N; i > 0; i--) { result *= i; } cout
-
[BOJ][C++] 백준 1181 단어 정렬CS/Algorithm & Data Structure 2022. 11. 22. 08:48
1. 중복제거 - find함수 이용하여 push_back할지 말지 미리 결정(요소가 이미 있으면 벡터에 추가하지 않음) 2. 정렬(길이순, 길이가 같으면 사전순) - compare함수를 만들어 sort함수 이용. #include #include #include using namespace std; bool compare(string p1, string p2) { if (p1.length() == p2.length()) { return p1 > N; vector v; for (int i = 0; i >str; if (find(v.beg..