반응형
https://www.acmicpc.net/problem/12931
문제 해결 알고리즘
그리디 알고리즘 문제
수 중에 홀수가 존재하면 홀수들을 전부 -1 해준다.
수 중에 홀수가 존재하지 않다면 모든 수를 2로 나눠준다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
int N, result = 0;
int arr[51];
bool is_zero(){
bool flag = true;
for(int i=0;i<N;i++){
if(arr[i]) {
flag = false;
break;
}
}
return flag;
}
int main(){
cin >> N;
for(int i=0;i<N;i++) cin >> arr[i];
while(1){
if(is_zero()) {
cout << result;
break;
}
bool div_exist = true;
for(int i=0;i<N;i++) {
if(arr[i]%2){
div_exist = false;
break;
}
}
if(div_exist){
for(int i=0;i<N;i++){
arr[i] /= 2;
}
result++;
}
else{
for(int i=0;i<N;i++){
if(arr[i]%2){
result++;
arr[i]--;
}
}
}
}
}
반응형
'알고리즘 문제 해결 > BOJ' 카테고리의 다른 글
[DP] BOJ 11054 가장 긴 바이토닉 부분 수열 (C++) (0) | 2022.10.26 |
---|---|
[DP] BOJ 13398 연속합 2 (C++) (0) | 2022.10.23 |
[0-1 BFS] BOJ 1261 알고스팟 (C++) (0) | 2022.10.17 |
[0-1 BFS] BOJ 13549 숨바꼭질 3 (C++) (0) | 2022.10.14 |
[우선순위 큐] BOJ 7662 이중 우선순위 큐 (C++) (0) | 2022.10.11 |