Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 7831

AtCoder:ABC321:A - 321-like Checker - 元Webデザイナー兼コーダーの備忘録

$
0
0

AtCoderの過去問対策です。ABCで解けなかった問題、ためになった問題のコードを備忘録として残します。

問題

A - 321-like Checker

解説

Editorial - SuntoryProgrammingContest2023(AtCoder Beginner Contest 321)

解答例1

#include <bits/stdc++.h>usingnamespacestd;

intmain(){
  string N;
  cin>> N;
  string result = "Yes";
  for(int i = 0, len = N.size()-1; i < len; i++){
    if(N.at(i) <= N.at(i+1)){
      result = "No";
      break;
    }
  }
  cout<< result << "\n"; 
}

メモ

  • N を文字列として受け取る

解答例2

#include <bits/stdc++.h>usingnamespacestd;

intmain(){
  int N;
  cin>> N;
  string result = "Yes";
  vector<int> D;  // 10で割った余りを入れるwhile(N > 0){
    D.push_back(N%10);
    N /= 10;
  }
  reverse(D.begin(), D.end());  // 配列を反転するfor(int i = 0, len = D.size()-1; i < len; i++){
    if(D.at(i) <= D.at(i+1)){
      result = "No";
    }
  }
  cout<< result << "\n"; 
}

メモ

  • N を各桁に分解する
  • N>0である間
    • Nを10で割った余りを配列の末尾に追加する
    • NをN/=10に置き換える
  • 配列Dを反転する
  • 問題文中の条件をループを使って判定する
  • N = 321の場合
    • vector<int> D = { 1, 2, 3 };となる
    • その後、反転してvector<int> D = { 3, 2, 1 };となる


Viewing all articles
Browse latest Browse all 7831

Trending Articles