[ 백준 9037 ] The candy war (C++)

2025. 3. 22. 21:08·Algorithm/Baekjoon
반응형

[문제 풀이]

1. 홀수개를 가진 아이에게 1개씩 사탕을 준다.

2. 모든 아이가 사탕을 동일하게 가질 때까지 수행한다.

    2-1. 오른쪽 사람에게 사탕의 절반을 준다.

    2-2. 홀수개를 가진 아이에게 1개씩 사탕을 준다.

[코드]

  • 홀수개를 가진 아이에게 1개씩 사탕을 준다.
for(int n=0; n<N; n++){
    if(arr[n]%2 != 0) arr[n]++;
}
  • 오른쪽 사람에게 사탕의 절반을 준다.
for(int n=0; n<N; n++){
    arr[n] /= 2;
}
int last = arr[N-1];
for(int n=N-1; n>0; n--){
    arr[n] += arr[n-1];
}
arr[0] += last;

[전체 코드]

#include <iostream>
#include <vector>
using namespace std;
bool check(int n, int arr[]){
    bool flag = true;
    for(int i=0; i<n-1; i++){
        if(arr[i] != arr[i+1]){
            flag = false;
        }
    }
    return flag;
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int T, N, arr[11], answer;
    vector<int> vc;
    cin>>T;
    for(int t=0; t<T; t++){
        cin>>N;
        for(int n=0; n<N; n++){
            cin>>arr[n];
        }
        answer = 0;
        if(N == 1){
            cout<<answer<<"\n";
            continue;
        }
        for(int n=0; n<N; n++){
            if(arr[n]%2 != 0) arr[n]++;
        }
        while(true){
            if(check(N, arr)) break;
            answer++;
            for(int n=0; n<N; n++){
                arr[n] /= 2;
            }
            int last = arr[N-1];
            for(int n=N-1; n>0; n--){
                arr[n] += arr[n-1];
            }
            arr[0] += last;
            for(int n=0; n<N; n++){
                if(arr[n]%2 != 0) arr[n]++;
            }
        }
        cout<<answer<<"\n";
    }
    return 0;
}

https://www.acmicpc.net/problem/9037

 

반응형

'Algorithm > Baekjoon' 카테고리의 다른 글

[ 백준 20114 ] 미아 노트 (C++)  (0) 2025.04.10
[ 백준 10994 ] 별 찍기 - 19 (C++)  (0) 2025.02.23
[ 백준 2503 ] 숫자 야구 (C++)  (0) 2025.02.15
[ 백준 1431 ] 시리얼 번호 (C++)  (0) 2025.02.10
[ 백준 1388 ] 바닥 장식 (JAVA)  (0) 2025.01.31
'Algorithm/Baekjoon' 카테고리의 다른 글
  • [ 백준 20114 ] 미아 노트 (C++)
  • [ 백준 10994 ] 별 찍기 - 19 (C++)
  • [ 백준 2503 ] 숫자 야구 (C++)
  • [ 백준 1431 ] 시리얼 번호 (C++)
CodeCaptain
CodeCaptain
BackEnd Developer code-0dyssey 님의 블로그 입니다.
  • CodeCaptain
    Code Odyssey
    CodeCaptain
  • 전체
    오늘
    어제
    • All (18)
      • BackEnd (3)
      • FrontEnd (0)
      • DB (0)
      • DevOps (1)
      • Algorithm (12)
        • Baekjoon (12)
      • CS (0)
      • ETC (2)
        • 회고 (1)
        • 책 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.1
CodeCaptain
[ 백준 9037 ] The candy war (C++)
상단으로

티스토리툴바