작성일 :

문제 링크

11109번 - 괴짜 교수

설명

개발 시간과 실행 횟수를 비교하여 병렬화 여부를 판단하는 조건 비교 문제입니다.


접근법

각 경우에 다음과 같은 총 시간이 소요됩니다:

  • 직렬 버전 총 시간: n * s
  • 병렬 버전 총 시간: d + n * p


이 두 값을 비교하여,

  • 병렬 버전이 빠르면 "parallelize"
  • 직렬 버전이 빠르면 "do not parallelize"
  • 동일하면 "does not matter"

을 출력합니다.


Code

C#

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

class Program {
  static void Main() {
    int t = int.Parse(Console.ReadLine());
    while (t-- > 0) {
      var input = Console.ReadLine().Split().Select(int.Parse).ToArray();
      int d = input[0], n = input[1], s = input[2], p = input[3];

      int par = d + n * p, seq = n * s;
      if (par < seq)
        Console.WriteLine("parallelize");
      else if (par > seq)
        Console.WriteLine("do not parallelize");
      else
        Console.WriteLine("does not matter");
    }
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;

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

  int t; cin >> t;
  while (t--) {
    int d, n, s, p; cin >> d >> n >> s >> p;
    int par = d + n * p, seq = n * s;
    cout << (par < seq ?
              "parallelize" : par > seq ?
              "do not parallelize" : "does not matter") << "\n";
  }

  return 0;
}