끄적끄적 코딩
article thumbnail
[C++] 백준 1789번 수들의 합
알고리즘 2019. 10. 2. 08:56

N개의 자연수의 합이 S일 때 S가 주어지고 N의 최댓값을 구하는 문제입니다. N이 최대이기 위해서는 가능한 많은 수를 써야합니다. 중복되는 수는 사용할 수 없기 때문에 1부터 순차적으로 더해줍니다. 마지막으로 더한 숫자를 이용해서 200에 맞아 떨어지게 해줄 수 있으므로 순차적으로 더해서 S보다 커지면 -1을 해줍니다. #include #include using namespace std; int main(int argc, char* argv[]) { long long n; long long sum = 0; long long count = 1; cin >> n; while (1) { sum += count; if (sum > n) { --count; break; } ++count; } cout

article thumbnail
[C++] 백준 1964번 오각형, 오각형, 오각형...
알고리즘 2019. 10. 2. 08:41

오각형의 점의 개수를 구하는 문제입니다. 첫번째 오각형은 5 두번째 오각형은 7 세번째 오각형은 10 네번째 오각형은 13 다섯번째 오각형은 16 두번째 오각형부터 3씩 증가하는것을 확인할 수 있습니다. #include #include using namespace std; int main(int argc, char* argv[]) { int n; int num; int sum; sum = 5; num = 7; cin >> n; for (int i = 2; i

article thumbnail
[C++] 백준 2965번 캥거루 세마리
알고리즘 2019. 10. 2. 08:31

캥거루가 세마리 있고 한마리의 캥거루가 나머지 두마리 캥거루 사이로 점프를 할 수 있을 때 최대 몇번 점프가 가능한지 구하는 문제입니다. 예제의 경우 3 5 9 3 -> 6 5 6 9 5 -> 7 6 7 9 6 -> 8 7 8 9 총 3번 이동할 수있습니다. 최대 이동 횟수는 1. 가장 큰 수 - 중간 수 - 1 2. 중간 수 - 가장 작은 수 - 1 1, 2번 중 더 큰 수만큼 점프가 가능합니다. #include #include using namespace std; int main(int argc, char* argv[]) { int K[3]; cin >> K[0]; cin >> K[1]; cin >> K[2]; sort(K, K + 3); cout

article thumbnail
[C++] 백준 1075번 나누기
알고리즘 2019. 10. 2. 08:24

N이 주어졌을때 N의 1의 자리와 10의 자리를 바꿔서 F로 나누어떨어지는 가장 작은 수를 구하는 문제입니다. N의 10과 1의 자리 수를 0으로 바꾼후 0~99까지 바꿔서 F로 나누어떨어지는 경우 그 수를 출력해주었습니다. #include #include using namespace std; int main(int argc, char* argv[]) { int n, f; int i; cin >> n; cin >> f; n -= n % 100; for (i = 0; i < 100; ++i) { if ((n + i) % f == 0) { break; } } if (i < 10) { cout

article thumbnail
[C++] 백준 4504번 배수 찾기
알고리즘 2019. 10. 2. 08:17

n이 주어지고 이후에 받는 수들이 n의 배수인지 찾는 문제입니다. 입력받은 수들을 n으로 나누었을때 나머지가 0이면 배수이며, 아닐경우 배수가 아닌것으로 출력해주었습니다. #include #include using namespace std; int main(int argc, char* argv[]) { int n; int num; cin >> n; while (1) { cin >> num; if (num == 0) { break; } if (num % n == 0) { cout

article thumbnail
[C++] 백준 13565번 침투
알고리즘 2019. 10. 1. 17:19

DFS, BFS 문제입니다. outer side에서 inner side까지 이동할 수 있는지 구해야합니다. 첫번째 줄에서 마지막 줄까지 하나라도 이동이 가능하면 YES, 불가능하면 NO를 출력합니다. 첫번째줄에 대해서 모두 DFS를 하여서 마지막 줄에 접근이 되는지 찾아서 풀었습니다. #include #include #include #include using namespace std; bool flag = false; int n, m; int moveX[4] = { 0, 1, 0, -1 }; int moveY[4] = { 1, 0, -1, 0 }; int map[1010][1010]; int visit[1010][1010]; string s; void DFS(int a, int b) { visit[a][..

article thumbnail
[C++] 백준 14954번 Happy Number
알고리즘 2019. 10. 1. 16:32

각 자리의 수를 제곱해서 더하는 것을 반복했을 때 최종적으로 1이 나오는 수는 HAPPY한 수입니다. 1이 나오지 않고 반복되는 수는 UNHAPPY한 수입니다. 나오는 수들을 vector에 넣어서 저장해두고 DFS를 통해서 1이 나올때 까지 계산을 반복합니다. 만약 DFS도중 vector에 있는 수가 나올 경우 UNHAPPY한 상태이며, 1이 나오는 경우면 HAPPY한 상태라고 판단할 수 있습니다. #include #include #include #include using namespace std; int n; vector check; int solve(int x) { check.push_back(x); int result = 0; while (x != 0) { result += pow(x % 10, 2..

article thumbnail
[C++] 백준 10992번 별 찍기 - 17
알고리즘 2019. 10. 1. 11:37

별 찍기 문제입니다. 첫번째 줄과 마지막 줄은 원래대로 출력하고 가운데 줄들은 중간에 공백으로 처리해서 출력해주었습니다. #include #include using namespace std; int main(int argc, char* argv[]) { int n; cin >> n; for (int i = 1; i

검색 태그