25495번: 에어팟
다섯 번째 핸드폰까지 연결하면 누적 배터리 소모량은 62퍼센트가 된다. 그리고 여섯 번째 핸드폰에 연결하면 배터리 소모량이 100퍼센트 이상인 126퍼센트가 되므로 현재 에어팟은 충전시켜야
www.acmicpc.net
새로운 에어팟으로 연결할 떄
- 제목
에어팟
- 조건
시간 제한 : 1 초
메모리 제한 : 1024 MB
- 문제
에어팟에 여러 개의 핸드폰을 다음과 같은 방법으로 연결하고자 한다.
에어팟은 한 번에 하나의 핸드폰에만 연결이 가능하다.
에어팟을 새로운 핸드폰에 연결할 때마다, 기존 핸드폰과의 연결이 끊어지고, 에어팟 배터리 2퍼센트를 소모한다.
이미 연결되어 있는 핸드폰에 다시 연결을 시도할 때, 직전 배터리 소모량의 2배만큼 배터리를 소모하게 된다.
누적 배터리 소모량이 100퍼센트 이상이 될 경우, 에어팟을 충전시켜야 하기 때문에 현재 핸드폰과 에어팟의 연결을 해제한다. 이 경우 에어팟의 배터리 소모량은 0이 되고, 다음 핸드폰부터는 새로운 에어팟에 연결한다.
핸드폰의 종류는 1부터 9 사이의 숫자로 나타내어지고, 에어팟에 연결한 순서대로 주어진다. 에어팟을 핸드폰에 연결한 횟수 N과 각 차례에 연결한 핸드폰 종류 A_i가 주어질 때, 현재 에어팟 배터리의 소모량을 퍼센트 단위로 출력하시오.
- 입력
첫 번째 줄에는 에어팟에 핸드폰의 연결한 횟수 $N$이 주어진다. (1 ≤ N ≤ 1000)
두 번째 줄에는 정수 A_1, A_2, ..., A_N이 공백으로 구분되어 주어진다. (1 ≤ A_i ≤ 9)
핸드폰의 종류는 에어팟에 연결을 시도한 순서대로 주어진다.
- 출력
현재 에어팟의 배터리 소모량을 출력하시오.
예제 입력1 | 예제 출력1 |
4 1 2 3 1 |
8 |
예제 입력2 | 예제 출력2 |
7 2 2 2 2 2 2 2 |
2 |
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
#define endl '\n'
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int sz, *arr;
cin >> sz;
arr = new int[sz];
for(int n = 0 ; n < sz ; n++) cin >> arr[n];
int battery = 100, prev_phone = -1, prev_consume = 0;
for(int n = 0 ; n < sz ; n++){
if(arr[n] != prev_phone){
battery -= 2;
prev_consume = 2;
}
else{ // arr[n] == prev_phone
battery -= prev_consume * 2;
prev_consume *= 2;
}
prev_phone = arr[n];
if(battery <= 0) {
battery = 100;
prev_phone = -1;
prev_consume = 0;
}
}
cout << 100 - battery << endl;
return 0;
}
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 25497 - 기술 연계마스터 임스 (0) | 2022.08.23 |
---|---|
[BOJ/백준] 25496 - 장신구 명장 임스 (0) | 2022.08.23 |
[BOJ/백준] 25494 - 단순한 문제 (Small) (0) | 2022.08.23 |
[BOJ/백준] 23806 - 골뱅이 찍기 - ㅁ (0) | 2022.08.23 |
[BOJ/백준] 4696 - St. Ives (0) | 2022.08.21 |