Algorithm/Problem Solving

배(0) 등(1) 도(0*1 + 1*3) = 3 개(0*2 + 1*2) = 2 걸(0*3 + 1*1) = 1 윷(0*4) = 0 모(1*4) = 4 변수 int sum = 0 : 정수들의 합 int num : 사용자가 입력하는 수 풀이 숫자 네개씩 세번 입력 받기. (반복문) 윷짝들의 상태 판단 숫자 네개의 합이 각각 0 : 윷 1 : 걸 2 : 개 3 : 도 4 : 모 이므로 숫자를 입력받는 족족 sum에 더해, 숫자 네개의 합을 구한 뒤 위의 기준대로 판단하여 출력한다. 이후 다음 숫자 네개를 입력 받기 전에 sum을 0으로 초기화한다. 코드 #include using namespace std; int main() { int sum = 0, num; for (int i = 0; i < 3; i++) ..
10보다 작거나 같은 자연수 n개를 주면 합을 구하는 프로그램 변수 int c : 테스트 케이스 개수(사용자가 입력) int n : 각 테스트 케이스에 대해서 주어진 자연수 개수(사용자가 입력) int num : 사용자가 입력한 자연수 int sum = 0 : 그 자연수의 합 풀이 각 테스트 케이스(c)에 대해 자연수 개수(n)만큼 입력 받고, num 입력 받는 족족 sum에 더해준 뒤 출력한다. 코드 #include using namespace std; int main() { int c, n, num, sum = 0; cin >> c; for (int i = 0; i > n; for (int j = 0; j > num; sum += num; ..
7개의 자연수 사용자 입력 이들 중 홀수들의 합을 구하고, 홀수인 수들 중 최솟값을 찾는 프로그램 변수 int n : 사용자 입력 수 int oddSum = 0 : 홀수의 합 int oddMin = 100 : 홀수인 수 중 최솟값 (100보다 작은 수들 입력 받으므로 처음에 100으로 초기화) 풀이 1) 홀수란? 2로 나눴을 때 나머지가 0이 아닌 것 2) 홀수의 합 입력 값을 체크해 홀수일 때마다 oddSum 변수에 더해준다. 3) 최솟값 구하기 odd인 경우, oddMin과 비교하여 사용자가 입력한 수가 더 작으면 oddMin에 입력 수를 넣는다. 그렇게 7번 반복하면 마지막에 oddMin에 저장되는 수는 홀수 중 최솟값이 된다. 4) 홀수가 존재하지 않는 경우? oddSum == 0이면 홀수가 존재..
문제 피보나치 수 : 0번째 0, 1번째 1이고 그 뒤로는 바로 앞 두 수의 합이 되는 수 n번째 피보나치 수를 구하는 프로그램 작성 변수 long long fiboarr[100] = {0,1,} : 피보나치 수의 배열, 0, 1번째 수는 0, 1로 고정됨을 참고 int n : 사용자가 입력하는 수 풀이 피보나치수는 뒤로 갈수록 겁나겁나 큰 수가 나오게 되므로 int 대신 long long을 사용했다. ( 45번째 피보나치수는 1134903170이다. ) n이 0인 경우와 n이 1인 경우는 각각 0, 1를 출력하면 되므로 인덱스에 맞는 수 출력하면 된다. 위의 경우가 아닌데, 배열의 요소가 0인 경우에는 해당 인덱스에 fibo(N-1) + fibo(N-2) 값을 넣는다. 시간 제한이 1초인 문제라 시간이..
문제 요약 5개의 숫자를 입력 받은 후, 각 숫자를 제곱한 수들의 합을 10으로 나눈 나머지를 출력 변수 int n : 사용자가 입력하는 수 int v = 0 : 검증수 (각 숫자를 제곱한 수들의 합을 10으로 나눈 나머지) 풀이 입력받는 족족 제곱하여 v에 더하는 과정을 5번 반복한다. 그 뒤 v를 10으로 나눈 나머지를 다시 v에 저장한다. v를 출력한다. 코드 #include using namespace std; int main() { int n, v = 0; for (int i = 0; i > n; v += (n * n); } v = v % 10; cout
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램 작성 사용한 변수 num : 사용자에게 입력받을 수 max = 0 : 최댓값 maxIndex : 최댓값의 순서 풀이 1. 최댓값 구하기 최댓값이라는 건, 다른 모든 수보다 큰 수라는 말이다. 최댓값만 구하는 문제이므로 다른 짭쪼리 수들에는 관심이 없다. 따라서 max 변수를 선언한 후, 수를 입력받을 때마다 입력받은 수가 max보다 큰지 비교한다. max보다 큰 경우에는 그 수를 max에 넣어주고, 같은 동작을 반복한다. 반복문을 벗어날 때에는 가장 큰 수가 max 변수에 저장되어 있을 것이다. ( 처음 비교를 위해 max = 0으로 초기화 하는 작업이 필요하다. ) 2. 최댓값이 몇 번째 수인지..
Idea 변수 ) int n, k, count = 0(약수의 개수) vector div (약수를 넣는 벡터) 1. 약수 구하기. 약수의 정의가 이므로 n을 1부터 n까지의 숫자로 나눠 나머지가 0인 것을 약수 벡터에 집어넣는다. 2. 약수들 중 K번째로 작은 수 출력 1부터 n까지 1씩 증가하면서 약수인지 체크해 벡터에 넣었으므로 벡터에 있는 약수들은 이미 오름차순 정렬이다. 벡터 인덱스의 시작은 0이다. 따라서 K번째로 작은 수의 인덱스는 K-1일 것이다. 이때, N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력해야한다. 따라서 약수를 약수 벡터에 집어넣을 때마다 count를 1씩 증가시켜, 벡터의 크기를 미리 구해둔다. 이후 벡터의 크기가 k보다 작을 경우 0을 출력..
Idea 변수 : m, n, count = 0(소수의 개수), sum=0(소수의 합), min(가장 작은 소수) 1. 소수인지 아닌지 (참고) 2021/01/18 - [C++/백준 알고리즘] - [C++] 백준 1978. 소수 찾기 풀이 [C++] 백준 1978. 소수 찾기 풀이 소수란? Idea 소수 판별하기 : 소수는 1이외의 약수가 없으므로 1보다 크고 자신보다 작은 자연수로 나누었을 때 나누어떨어지지 않아야한다. Code #include using namespace std; bool isPrime(int n) { int i =.. jyostudy.tistory.com 2. 소수의 합 구하기 m부터 n까지의 숫자 중에 소수가 있으면 그것을 sum 변수에 더한다. for문을 나올 때면, 모든 소수의 ..
정쫀쪼
'Algorithm/Problem Solving' 카테고리의 글 목록 (5 Page)