작성일 :

문제 링크

11383번 - 뚊

설명

두 개의 이미지가 주어졌을 때, 첫 번째 이미지를 가로로 두 배로 확장한 결과가 두 번째 이미지와 동일한지 여부를 판단하는 문제입니다.


  • 첫 번째 이미지는 N × M 크기입니다.
  • 두 번째 이미지는 N × 2M 크기이며,
  • 첫 번째 이미지의 각 문자를 두 번씩 반복해서 만든 결과와 두 번째 이미지가 동일한지를 비교합니다.


접근법

  • 먼저 N, M을 입력받습니다.
  • 두 개의 이미지 데이터를 각각 N줄씩 받아 저장합니다.
  • 각 줄에 대해 다음과 같은 조건을 검사합니다:
    • 첫 번째 이미지의 각 문자를 두 번 반복한 결과와,
    • 두 번째 이미지의 해당 줄이 정확히 일치하는지 확인합니다.
  • 한 줄이라도 일치하지 않으면 "Not Eyfa"를 출력하고, 모든 줄이 일치하면 "Eyfa"를 출력합니다.



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
using System;

class Program {
  static void Main() {
    var nm = Console.ReadLine().Split();
    int n = int.Parse(nm[0]), m = int.Parse(nm[1]);

    var original = new string[n];
    var expanded = new string[n];
    for (int i = 0; i < n; i++)
      original[i] = Console.ReadLine();
    for (int i = 0; i < n; i++)
      expanded[i] = Console.ReadLine();

    bool match = true;
    for (int i = 0; i < n; i++) {
      string doubled = "";
      foreach (var ch in original[i])
        doubled += new string(ch, 2);
      if (doubled != expanded[i]) {
        match = false;
        break;
      }
    }

    Console.WriteLine(match ? "Eyfa" : "Not Eyfa");
  }
}

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;
typedef vector<string> vs;

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

  int n, m; cin >> n >> m;
  vs a(n), b(n);
  for (int i = 0; i < n; i++)
    cin >> a[i];
  for (int i = 0; i < n; i++)
    cin >> b[i];

  bool isE = true;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < 2 * m; j++)
      if (b[i][j] != a[i][j / 2]) isE = false;

  cout << (isE ? "Eyfa" : "Not Eyfa") << "\n";

  return 0;
}