작성일 :

문제 링크

31669번 - 특별한 학교 탈출

설명

학교에서 탈출하려는 학생들이 선생님에게 들키지 않고 탈출할 수 있는 가장 빠른 시각을 찾는 문제입니다.

각 선생님의 순찰 스케줄이 주어지고, 학생들은 모든 선생님이 순찰하지 않는 시각에 탈출해야 합니다.

입력으로 주어지는 문자열에서 'O' 는 해당 시간에 선생님이 순찰을 한다는 것을, 'X' 는 해당 시간에 선생님이 순찰을 하지 않는다는 것을 의미합니다.




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
namespace Solution {
  class Program {
    static void Main(string[] args) {

      var reader = new System.IO.StreamReader(Console.OpenStandardInput());
      Console.SetIn(reader);

      var inputs = Console.ReadLine()!.Split();
      var n = int.Parse(inputs[0]);
      var m = int.Parse(inputs[1]);

      var schedules = Enumerable.Range(0, n)
        .Select(_ => Console.ReadLine())
        .ToList();

      var escapeColumn = Enumerable.Range(0, m)
        .FirstOrDefault(i => schedules
          .All(sch => sch![i] != 'O'), -1);

      if (escapeColumn == -1)
        Console.WriteLine("ESCAPE FAILED");
      else Console.WriteLine(escapeColumn + 1);

    }
  }
}



[ 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
29
30
31
32
33
34
35
#include <bits/stdc++.h>

using namespace std;

typedef vector<string> vs;

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

  int n, m; cin >> n >> m;

  vs schedules(n);
  for (int i = 0; i < n; i++)
    cin >> schedules[i];

  for (int j = 0; j < m; j++) {
    bool enableEscape = true;
    for (int i = 0; i < n; i++) {
      if (schedules[i][j] == 'O') {
        enableEscape = false;
        break ;
      }
    }

    if (enableEscape) {
      cout << j + 1 << "\n";
      return 0;
    }
  }

  cout << "ESCAPE FAILED\n";

  return 0;
}