업데이트:

문제 링크

백준 25495번 - 에어팟 (Bronze 3)

문제 설명

에어팟을 다음과 같이 연결할 때, 현재 에어팟 배터리의 소모량을 출력하시오.

  • 에어팟은 한 번에 하나의 핸드폰에만 연결할 수 있다.
  • 에어팟을 새로운 핸드폰에 연결하면 기존 연결은 끊어지고, 배터리를 2만큼 소모한다.
  • 이미 연결된 핸드폰에 재연결을 시도하면 배터리를 2 * 직전 소모량만큼 소모한다.
  • 에어팟의 누적 배터리 소모량이 100 이상이면 현재 핸드폰과 에어팟의 연결을 해제하고, 다음 핸드폰부터는 배터리 소모량이 0인 새 에어팟에 연결한다.

정답 코드 및 설명

요구한 그대로 구현하면 된다.
코드에서 battery는 현재 배터리 소모량을, total은 누적 배터리 소모량을 뜻한다.
코드의 21행에서 battery를 1로 설정하는 이유는 처리를 보다 쉽게 하기 위함이다. 이렇게하면 이전 에어팟이 연결되었던 핸드폰이 무엇인지와 무관하게 새로운 에어팟의 배터리 소모를 2로 맞춰줄 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] a = new int[n];
        int total = 0;
        int battery = 1;
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(st.nextToken());
            if (i == 0 || a[i - 1] != a[i]) battery = 2;
            else battery *= 2;
            total += battery;
            if (total >= 100) {
                total = 0;
                battery = 1;
            }
        }
        System.out.println(total);
    }
}

댓글남기기