[Bronze II] 에어팟 - 25495

문제 링크

성능 요약

메모리: 1112 KB, 시간: 0 ms

분류

구현, 시뮬레이션

제출 일자

2026년 04월 25일 22:04:59

문제 설명

에어팟에 여러 개의 핸드폰을 다음과 같은 방법으로 연결하고자 한다.

  • 에어팟은 한 번에 하나의 핸드폰에만 연결이 가능하다.
  • 에어팟을 새로운 핸드폰에 연결할 때마다, 기존 핸드폰과의 연결이 끊어지고, 에어팟 배터리 2퍼센트를 소모한다.
  • 이미 연결되어 있는 핸드폰에 다시 연결을 시도할 때, 직전 배터리 소모량의 2배만큼 배터리를 소모하게 된다.
  • 누적 배터리 소모량이 100퍼센트 이상이 될 경우, 에어팟을 충전시켜야 하기 때문에 현재 핸드폰과 에어팟의 연결을 해제한다. 이 경우 에어팟의 배터리 소모량은 0이 되고, 다음 핸드폰부터는 새로운 에어팟에 연결한다.

핸드폰의 종류는 $1$부터 $9$ 사이의 숫자로 나타내어지고, 에어팟에 연결한 순서대로 주어진다. 에어팟을 핸드폰에 연결한 횟수 $N$과 각 차례에 연결한 핸드폰 종류 $A_i$가 주어질 때, 현재 에어팟 배터리의 소모량을 퍼센트 단위로 출력하시오.

입력

첫 번째 줄에는 에어팟에 핸드폰의 연결한 횟수 $N$이 주어진다. ($1 \le N \le 1\,000$)

두 번째 줄에는 정수 $A_1, A_2, \dots, A_N$이 공백으로 구분되어 주어진다. ($1 \le A_i \le 9$)

핸드폰의 종류는 에어팟에 연결을 시도한 순서대로 주어진다.

출력

현재 에어팟의 배터리 소모량을 출력하시오.


💡 해결 방법

💻 코드

//https://www.acmicpc.net/problem/25495
//21:05~
#include<stdio.h>
#include<stdlib.h>
 
void check(int t, int p[])
{
    int cur = 0;
    int cur_b = 0;
    int ans = 0;
    for(int i = 0; i < t; i++)
    {
        if(cur == p[i])
            {
            cur_b = cur_b * 2;
            }
        else
            cur_b = 2;
        
        ans += cur_b;
        p[i] = ans >= 100 ? 0 : p[i];
        ans = ans >= 100 ? 0 : ans;
        cur = p[i];
    }
    printf("%d", ans);
 
}
 
int main()
{
int t = 0; scanf("%d", &t);
int* p = (int*)malloc(sizeof(int)*t);
for(int i = 0; i < t; i++)
{
    scanf("%d", &p[i]);
}
 
check(t, p);
 
 
return 0;
}