寝癖頭の解法

小学生の目線から、勉強中の覚え書きを投稿、更新していきます。

AtCoder Problems in C++ #A - ポスター (Poster)

JOI 2019/2020 二次予選 過去問から、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
競技プログラミング」を略して、「競プロ」などと呼ばれています。

#A - ポスター (Poster)

atcoder.jp

僕が作成、提出したコードは、以下のとおりです。

/*
AtCoder Problems in C++
#A - ポスター (Poster)
https://atcoder.jp/contests/joi2020yo2/tasks/joi2020_yo2_a
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int n;
  cin>>n;
  char s[n][n],t[n][n],u[n][n];
  for(int i=0;i<n;i++){
    for(int j=0;j<n;j++){
      cin>>s[i][j];
    }
  }
  for(int i=0;i<n;i++){
    for(int j=0;j<n;j++){
      cin>>t[i][j];
    }
  }
  int ans=n*n;
  for(int k=0;k<4;k++){
    int cnt=min(k,4-k);
    for(int i=0;i<n;i++){
      for(int j=0;j<n;j++){
        if(s[i][j]!=t[i][j]){
          cnt++;
        }
      }
    }
    ans=min(ans,cnt);
    for(int i=0;i<n;i++){
      for(int j=0;j<n;j++){
        u[j][n-i-1]=s[i][j];
      }
    }
    for(int i=0;i<n;i++){
      for(int j=0;j<n;j++){
        s[i][j]=u[i][j];
      }
    }
  }
  cout<<ans<<endl;
  return 0;
}