작성일 :

문제 링크

9317번 - Monitor DPI

설명

입력으로 모니터의 대각선 길이 d 와 가로 세로 해상도가 주어졌을 때, 모니터의 DPI(Dots Per Inch) 를 계산하는 문제입니다.

문제의 설명에 따르면, 모니터의 가로 세로 비율은 16:9 로 고정되어 있으므로,

이를 이용하여 모니터의 실제 가로 세로 길이를 구한 후, 이 값을 이용하여 DPI 를 계산하여 출력합니다.


Code

[ 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
27
28
namespace Solution {
  using System.Text;
  class Program {
    static void Main(string[] args) {

      var sb = new StringBuilder();
      while (true) {
        var input = Console.ReadLine()!.Split(' ');
        var d = double.Parse(input[0]);
        var resH = double.Parse(input[1]);
        var resV = double.Parse(input[2]);

        if (d == 0 && resH == 0 && resV == 0) break ;

        var w = 16 * d / Math.Sqrt(337);
        var h = 9 * d / Math.Sqrt(337);
        var dpiH = resH / w;
        var dpiV = resV / h;

        sb.AppendLine($"Horizontal DPI: {dpiH:F2}");
        sb.AppendLine($"Vertical DPI: {dpiV:F2}");
      }

      Console.Write(sb.ToString());

    }
  }
}



[ 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
#include <bits/stdc++.h>

using namespace std;

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

  while (true) {
    double d, resH, resV; cin >> d >> resH >> resV;

    if (d == 0 && resH == 0 && resV == 0) break ;

    double w = 16 * d / sqrt(337);
    double h = 9 * d / sqrt(337);
    double dpiH = resH / w;
    double dpiV = resV / h;

    cout.setf(ios::fixed); cout.precision(2);
    cout << "Horizontal DPI: " << dpiH << "\n";
    cout << "Vertical DPI: " << dpiV << "\n";
  }

  return 0;
}