작성일 :

문제 링크

16316번 - Baby Bites

설명

아릴드는 한 입 받을 때마다 1부터 순서대로 숫자를 말하지만, 때때로 mumble로 뭉개 말합니다.

n개의 단어가 주어질 때, 순서대로 1부터 n까지 세는 것이 가능한지 판정하는 문제입니다.


접근법

먼저, i번째 단어가 숫자라면 반드시 i여야 합니다. mumble이면 어떤 숫자도 될 수 있으므로 통과합니다.

다음으로, 1부터 n까지 순회하며 각 단어를 확인합니다. 숫자가 기대값과 다르면 실패입니다.

이후, 끝까지 통과하면 makes sense, 한 번이라도 실패하면 something is fishy를 출력합니다.


Code

C#

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

namespace Solution {
  class Program {
    static void Main(string[] args) {
      var n = int.Parse(Console.ReadLine()!);
      var parts = Console.ReadLine()!.Split();
      var ok = true;
      for (var i = 0; i < n; i++) {
        var s = parts[i];
        if (s != "mumble") {
          var val = int.Parse(s);
          if (val != i + 1) { ok = false; break; }
        }
      }
      Console.WriteLine(ok ? "makes sense" : "something is fishy");
    }
  }
}

C++

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

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

  int n; cin >> n;
  bool ok = true;
  for (int i = 1; i <= n; i++) {
    string s; cin >> s;
    if (s != "mumble") {
      int v = stoi(s);
      if (v != i) ok = false;
    }
  }
  cout << (ok ? "makes sense" : "something is fishy") << "\n";

  return 0;
}