작성일 :

문제 링크

15036번 - Just A Minim

설명

n개의 음표 코드가 주어질 때, 각 코드에 해당하는 길이의 총합을 구하는 문제입니다.

코드 0은 2, 1은 1, 2는 0.5, 4는 0.25, 8은 0.125, 16은 0.0625의 길이를 가집니다.


접근법

각 코드를 읽어 해당하는 길이를 합산합니다.

실수로 누적하여 출력합니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;

class Program {
  static void Main() {
    var n = int.Parse(Console.ReadLine()!);
    var parts = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);

    var sum = 0.0;
    foreach (var code in parts) {
      switch (code) {
        case 0: sum += 2.0; break;
        case 1: sum += 1.0; break;
        case 2: sum += 0.5; break;
        case 4: sum += 0.25; break;
        case 8: sum += 0.125; break;
        case 16: sum += 0.0625; break;
      }
    }

    Console.WriteLine(sum);
  }
}

C++

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
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;

  double sum = 0.0;
  for (int i = 0; i < n; i++) {
    int code; cin >> code;
    switch (code) {
      case 0: sum += 2.0; break;
      case 1: sum += 1.0; break;
      case 2: sum += 0.5; break;
      case 4: sum += 0.25; break;
      case 8: sum += 0.125; break;
      case 16: sum += 0.0625; break;
    }
  }

  cout << fixed << setprecision(10) << sum << "\n";

  return 0;
}