끄적끄적 코딩
article thumbnail
[C++] 백준 11653번 소인수분해
알고리즘 2019. 9. 2. 15:07

자연수 X를 소인수분해한 수들을 출력하는 문제입니다. 1. 1부터 X까지 반복 2. X % n == 0 이면 출력 3. X / = n 4. 1~3 반복 (X가 1이 될 때까지) #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; cin >> n; while (1) { if (n == 1) { break; } for (int i = 2; i

article thumbnail
[C++] 백준 1037번 약수
알고리즘 2019. 9. 2. 13:11

약수 N개가 주어졌을 때 자연수를 구하는 문제입니다. 가장 작은 약수와 가장 큰 약수를 곱해서 자연수를 구했습니다. #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; int minN = 987654321; int maxN = -987654321; int arr[60]; cin >> n; memset(arr, 0, sizeof(arr)); for (int i = 1; i > arr[i]; minN = min(minN, arr[i]); maxN = max(maxN, arr[i]); } cout

article thumbnail
[C++] 백준 5086번 배수와 약수
알고리즘 2019. 9. 2. 11:58

간단한 수학 문제입니다. x, y를 입력 받고 y % x == 0 일 경우 factor x % y == 0 일 경우 multiple 둘 다 아닌 경우 neither을 출력해줍니다. #include using namespace std; int main(int argc, char *argv[]) { int x, y; while (1) { cin >> x >> y; if (x == 0 && y == 0) { break; } if (y % x == 0) { cout

article thumbnail
[C++] 백준 1541번 잃어버린 괄호
알고리즘 2019. 9. 2. 11:54

괄호를 적절히 쳐서 최소값을 만드는 문제입니다. 연산자는 같은것이 연속해서 나올 수 없기 때문에 +가 나온 후에는 -가 나올 수 밖에 없고, -가 나온 후에는 +가 나올 수 밖에 없습니다. -가 후에 나온 +는 괄호를 통해서 묶을 수 있습니다. ex 100 + 20 - (30 + 60) - (20 + 40) 그러므로 처음 나온 연산자가 -면 전부 -처리해주면 되고, +면 한번 +연산해주고, 그다음 부터는 모든 값들을 - 연산해주면 됩니다. #include #include using namespace std; int num = 0; int m = 0; string tmp = ""; string s; void solve(void) { for (int i = 0; i > s; solve(); cout

article thumbnail
[C++] 백준 1436번 영화감독 숌
알고리즘 2019. 9. 2. 11:14

브루트 포스 문제입니다. 영화 제목을 666을 포함해서 지을 때 N번째 영화의 숫자는 무엇인지 구하는 문제입니다. ex) 1. 666 2. 1666 3. 2666 4. 3666 5. 4666 6. 5666 7. 6660 8. 6661 9. 6662 ... 숫자를 1씩증가하여 모든 숫자를 차례대로 검사합니다. 수를 string으로 바꿔서 find 함수를 통해 '666'이 포함되어 있는지 확인하고 포함되어 있다면 카운트를 증가해줍니다. 카운트가 n과 같아지면 현재 숫자를 출력합니다. #include #include using namespace std; int main(int argc, char *argv[]) { int n; int count = 0; int title = 665; string s; cin ..

article thumbnail
[C++] 백준 1018번 체스판 다시 칠하기
알고리즘 2019. 9. 2. 10:25

브루트 포스 문제입니다. N*M의 배열에서 8*8의 배열을 잘라서 최소한의 변경을 해서 체스판을 만드는 문제입니다. 변경은 B를 W로 바꾸거나 W를 B로 바꾸는 것을 이야기합니다. 체스판은 현재 위치와 인접한 장소는 다른 색이어야 합니다. 8*8모양으로 자른 모든 경우를 계산해보았습니다. chess[8][8] 배열에 자른 모양을 넣고 B로 시작했을때와 W로 시작했을때에 대한 경우에 대해서 카운트해주었습니다. 그리고 더 적게 카운트된 값을 리턴해주었습니다. #include #include #include using namespace std; char map[60][60]; char chess[8][8]; int solve() { int countWB = 0; int countBW = 0; for (int ..

article thumbnail
[C++] 백준 7568번 덩치
알고리즘 2019. 9. 2. 00:30

브루트 포스 문제입니다. 각 사람들의 몸무게와 키를 가지고 덩치의 등수를 구하는 문제입니다. A의 무게 > B의 무게 A의 키 > B의 키 가 성립할 때 덩치가 더 크다고 할 수 있습니다. A는 B~x까지 모든 사람과 비교를 해서 키와 무게가 모두 A> n; for (int i = 0; i > people[i][0]; cin >> people[i][1]; people[i][2] = 1; } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (i == j) { continue; } int w1, w2, h1, h2; w1 = people[i][0]; w2 = people[j][0]; h1 = people[i][1]..

article thumbnail
[C++] 백준 2231번 분해합
알고리즘 2019. 9. 1. 23:39

브루트 포스 문제입니다. 자연수 N이 주어졌을 때, 가장 작은 생성자를 구하는 문제입니다. 생성자는 X + (X의 요소들 각각을 더한 수) = N 인것 입니다. 예를들면 168의 경우 = 156 + 1 + 5 + 6 로 만들 수 있습니다. 여기서 168의 생성자는 156입니다. (1 + 5 + 6은 156의 각각 숫자의 합입니다.) 1부터 시작하여 각 수와, 수의 각 자리수를 전부 더한 값이 N과 같은지 비교하여 같으면 그 생성자를 출력하고, 없으면 0을 출력하게 하였습니다. #include #include #include using namespace std; int main(int argc, char *argv[]) { int num; int sum; int part; cin >> num; for (i..

검색 태그