LoginSignup
0
1

More than 1 year has passed since last update.

学習用【AtCoder】

Last updated at Posted at 2023-03-11

はじめに

競プロを始めて間もない人間による学習記録。
使用言語:C++
Raiting:51。

反省

出力文字は合っているか
Yes:先頭大文字か

基本

説明  サイズ 取り得る値
int 整数 4バイト -2,147,483,648 ~ 2,147,483,647
unsigned int 整数 4バイト 0 ~ 4,294,967,295
singned char 文字 1バイト -128~127
unsigned char 文字 1バイト 0~225
string 文字列

入出力

入力
int N;
cin >> N;
出力
cout << N << endl;

for文

通常
for(/* 初期状態 */; /* 繰り返し */; /* 変化式 */){
    //処理
}

範囲for文

  • 配列の要素に対する処理を簡潔に書くことができる
  • string型の変数に対して、1文字ずつ処理したい場合に便利
範囲for文
for (配列の要素の型 変数名 : 配列変数) {
  // 各要素に対する処理
}
実装例(文字列)
vector<int> a = {1, 3, 2, 5};
  for (int x : a) {
    cout << x << endl;
  }
出力結果
1 3 2 5
  • 入力値反転
    変数cに文字列Sを1文字ずつ代入していく
実装例(文字列)
string S = "10101";

for (char c : S) {
    if (c == '0'){
      cout << '1';
    }else{
      cout << '0';
    }
}

cout << endl;
出力結果
01010

配列

定義
vector<> 配列名 = {1, 2, 3, 4, 5, 6};
定義
vector<> 配列名();
例(int)
int N;
vector<int> vec();

(デバッグ用)各要素に入ってる値を確認する

繰り返し条件と、配列名は揃える
cout << "以下確認" << endl;
for (int i = 0; i < N; i++){
    cout << vec.at(i) << endl;
}

文字列

文字列の各要素取得

  string S;
  cin >> S;

/*1*/  cout << S.at(0) << endl;
/*2*/  cout << S.at(1) << endl;
/*3*/  cout << S.at(5 - 1) << endl;
/*4*/  cout << S.size() << endl;
入力
ABCDEF
結果
/*1*/  A  //0番目の要素
/*2*/  B  //1番目の要素
/*3*/  E  //4番目の要素
/*4*/  6  //配列の文字数

大文字と小文字の変換

ポイント
大文字から小文字:tolower()
小文字から大文字:toupper()

1文字の変更(大文字→小文字)
char C;
cin >> C;
char c = tolower(C);

cout << c << endl;
入力
A
結果
a
文字列の変更(小文字→大文字)
  string S;
  cin >> S;

  string T = "";

  for (int i = 0; i < S.size(); i++)
  {
    T += toupper(S[i]);
  }

  cout << T << endl;
入力
abcde
結果
ABCDEF

整数をアルファベットに変更

n 番目の大文字アルファベットを表す式
'A' + n - 1

n 番目の小文字アルファベットを表す式
'a' + n - 1

実装例
int n;
cin >> n;

char c = 'A' + n - 1;

cout << c << endl;
入力値
1
26
27
出力結果
A
Z
[

過去問

問題 番号 要点
ABC292 A 文字列の変更(小文字→大文字)
ABC294 B 整数から文字列に変更

ソート

  • 概要
    2つの値を入れ替える
関数
swap( , );

要素の入れ替え

vector<int> vec = {1, 2, 3, 4, 5, 6};
swap(vec[2], vec[3]);

for (int i = 0; i < vec.size(); i++){
  cout << vec.at(i) << endl;
}
結果
1 2 4 3 5 6

過去問

問題 番号 要点
ABC293 A 前後の文字の入れ替え

エラー

初期化してない

内容
warning: ‘変数名’ may be used uninitialized in this function
修正例
- int score;
+ int score = 0;
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1