백준 101

백준 30804 c++ 풀이 (과일 탕후루)

https://www.acmicpc.net/problem/30804 핵심전략:탕후루 한 알 한 알를 고려하여 푼다. (자료구조 큐를 사용) 정답코드:#include #define nl '\n'using namespace std;typedef long long ll;int i, j;int type[10];int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); queue q; int n; cin >> n; int cnt = 0; int result = 0; int len = 0; while(n--){ int num; cin >> num; q.push(num); len ++; if(type[num] == 0){ cnt ++; ..

BOJ 문제풀이 2024.08.11

백준 28702 c++ 문제 풀이 (FizzBuzz)

https://www.acmicpc.net/problem/28702 핵심 전략:연속 된 세 수 중 최소 하나의 수는 Fizz, Buzz, FizzBuzz에 해당되지 않는다는 사실을 이용 핵심 전략 증명: Fizz, Bizz, FizzBizz는 15를 주기로 가지며 규칙성이 있다. 따라서 1부터 15 중에 3의 배수, 5의 배수에 해당하는 것을 표시하면 위와 같고 그 수들은 16~30과 위치가 동일하다. 또 이를 보면 연속 된 세 수가 모두 표시 돼있는 경우는 없기 때문에 세 수 모두 Fizz, Bizz, FizzBizz에 속해 있을 수 없다. 정답 코드:#include #define nl '\n'using namespace std;typedef long long ll;int i, j;int main(){..

BOJ 문제풀이 2024.08.10

백준 30802 c++ 문제 풀이 (웰컴 키트)

https://www.acmicpc.net/problem/30802 핵심 전략:몫, 나머지 연산을 활용 (처음 작성한 코드와 비교하여) 최적화를 한 부분:처음 구현할 때, 각 티셔츠 사이즈 별로 몫을 구하는 과정을 if문을 사용하여 나머지가 0일 때의 몫과 그 외의 상황에서의 몫을 구하였다.  (아래 코드 참고)for(i = 1; i 하지만 다른 사람의 코드를 보고 if else 문을 한 줄로 더 효율적인 코드로 대체할 수 있음을 배웠다. 나누려는 수( 위 코드의 경우 변수 t) - 1을 나눠지는 수에 더한 후 t로 나눗셈을 진행해주면 된다 (정답 코드 참고).  정답 코드:#include #define nl '\n'using namespace std;typedef long long ll;int i, j..

BOJ 문제풀이 2024.08.10

백준 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