풀이 57

백준 1644번 c++ 풀이

전략: 1. 에라토스테네스의 체를 이용하여 소수를 판정하는 con 함수를 정의 하고, 투 포인터 알고리즘을 이용하여 연속합의 경우의 수를 반환하는 primesum 함수를 정의를 하고 적절히 사용한다. 코드: #include using namespace std; vector v; int N; int Primesum(){ int si = v.size(), l = 0, r = 0, sum = 0, result=0; while(l=N){ sum-=v[l]; l++; } else if(r>=si){ break; } else{ sum+= v[r]; r++; } } return result; } int con(int num){ if(num%2==0){ return false; } for(int i = 3; i>N; ..

BOJ 문제풀이 2021.10.10

백준 4673번 c++ 풀이

전략: 1. 10001 길이의 배열을 bool타입으로 만들어주고 기본 값을 true로 설정해준다 2. 1부터 10001까지 반복하여 해당 숫자와 각자리수 값을 더한 값의 배열 해당 인덱스를 false로 설정해주고 만약 sum이 10000을 넘어간다면 다음 경우를 실행한다. 3. 배열을 확인하여 true값을 갖고 있는 인덱스를 출력한다. 코드: #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); bool arr[10001]; for(int i= 0; i

BOJ 문제풀이 2021.10.10

백준 2193번 c++ 풀이

전략: 1. 3이상의 N에 대하여 N자리 이친수는 N-1자리 이친수 뒤에 0을 붙이는 것과, N-2자리 이친수 뒤에 01을 붙이는 경우이기 때문에 점화식은 pr(num) = pr(num-1) + pr(num-2)가 된다 코드: #include long long int arr[100]= {0, 1, 1, 2}; long long int pr(int num){ if(arr[num]){ return arr[num]; } arr[num] = pr(num-1) + pr(num-2); return arr[num]; } using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin>>N; cout

BOJ 문제풀이 2021.10.10

백준 2436 c++ 풀이

전략: 1. 1부터 루트(gcd*lcm)까지 작은 자연수를 설정한다. 2. 만약 그 자연수와 gcd*lcm/자연수의 GCD값이 주어진 gcd값과 같으면 result에 대입하고 출력한다. 코드: #include using namespace std; using ll = long long; ll GCD(ll a, ll b){ if(b==0){ return a; } return GCD(b, a%b); } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll gcd, lcm; cin>>gcd>>lcm; ll result1, result2; for(ll i= 1; i*i

BOJ 문제풀이 2021.10.10

백준 9461 c++ 풀이

안녕하세요 오늘은 동적 계획법 문제를 풀어볼 것입니다. 전략: 1. P(n)의 값을 n+1번째 원소로 하는 배열을 선언해주고, P(n) 함수를 선언해준다. 2. P(n) = P(n-2) + P(n-3)임을 이용하여 P(n)함수를 정의해준다. 코드: #include using namespace std; long long int arr[101] = {0, 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, }; long long int P(int n){ if(arr[n]){ return arr[n]; } else{ arr[n] = P(n-2) + P(n-3); return arr[n]; } } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); i..

BOJ 문제풀이 2021.08.31

백준 17219 c++ 풀이

안녕하세요 오늘은 이진탐색을 이용하여 문제를 풀어보겠습니다. 전략: 1. string, string 을 페어로 하는 pair를 타입으로 하는 v라는 vecotr를 만들고, string 타입으로 x, y를 입력 받아서 각각 v[i].first, v[i].second에 대입해주고 이진탐색을 위해 sort를 해준다. 2. string 타입의 x라는 변수를 입력받고, 이진탐색을 진행하여 만약 x와 v[mid].first가 같으면 v[mid].second를 출력한다. 코드: #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N, M; cin>>N>>M; vector v(N); for(int i..

BOJ 문제풀이 2021.08.17