Baekjoon(baekjoon)-C++の定理


1181単語のソート
//방법 1

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool compareWith(string a, string b){
  if(a.length() == b.length())
    return a<b;
  return a.length()<b.length();
}

int main(){
  int N;
  vector<string> vec;  
  cin>>N;
  for(int i=0; i<N; i++){
    string str;
    cin>>str;
    if(find(vec.begin(), vec.end(), str) == vec.end()) //
      vec.push_back(str);
  }
  sort(vec.begin(), vec.end(), compareWith);

  for(int i=0; i<vec.size(); i++){
    cout<<vec[i]<<'\n';
  }
}


//방법 2


#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int n;
string a[20000];

bool compare(string a, string b) {
	if (a.length() < b.length()) {
		return 1;
	}
	else if (b.length() < a.length()) {
		return 0;
	}
	else {
		return a < b;
	}
}

int main() {
	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	sort(a, a + n, compare);

	for (int i = 0; i < n; i++) {
		if (i > 0 && a[i] == a[i - 1]) continue;
		cout << a[i] << ' ';
	}

}
ベクトル
:動的配列構造のクラス
利点:サイズ変更が自由で、連続的なランダムアクセスが容易
欠点:データの取得速度が遅く、中間不連続のデータの挿入と削除が必要な場合、効率が低下する
vector<データ型>変数名(数値、名前、配列などでよろしいですか?)
v.begin():ベクトルの始点のアドレス値を返します.
v.end():戻りベクトル(末尾+1)アドレス値
v.push back():ベクトルの最後に新しい要素を追加
参考資料:https://hwan-shell.tistory.com/119
find(first, last, type?): 範囲内でtypeに一致する最初の要素を返します.(見つからない場合はlastを返します)
方法.
文字列をベクトルとして格納するスペースの作成
入力文字列を受信し、入力文字列と同じ文字がベクトル配列に存在することを確認します.
->find関数は、値が見つからないlast値を返します.したがって、last値(=vec.end())を返すと、入力した文字列とベクトルの値が一致しません.
存在しない場合は、ベクトルの最後に文字列を追加します.
sort関数と事前に作成したcompareWith関数を使用して、アルファベット順と長さ順に並べ替えます.
最後に完了したベクトルのサイズを繰り返し、値を出力します.
方法.
指定した数の単語を受け入れて文字列配列に保存
配列内で最初から最後まで作成する比較関数に基づいてソートするには
->compare関数:長さ順に並べ替える(長さが短い場合は前へ)->アルファベット順に並べ替える(アルファベット順に並べ替える場合はaソート後、同じ単語があるかどうかをチェックし、同じ単語がある場合は出力せずに出力を続け、次の単語が同じかどうかを判断します.△単語は揃えられているので、前後の単語が同じかどうかを知るだけです.
+i>0の理由は、iが0の場合にa[0]と存在しないa[1]との比較を避けるためである
1292簡単に解く
#include <iostream>

using namespace std;

int main(){
    int number[1001], k=1;
 
    for(int i=1;i<=1000;i++){ //1~1000까지의 숫자
        for(int j=1;j<=i;j++){
            number[k]=i; //1~1000까지의 숫자를 1씩 증가하면서 반복해서 넣어주기,,응?
            if(k>1000){
                break; //배열이 모두 차면 for문 빠져나오기
            }
            k++; 
        }
    }


    int a, b, result=0;
    cin>>a>>b;
    for(int i=a;i<=b;i++){ //합해서 출력
        result+=number[i];
    }
    cout<<result;

}
2つのドアについて、1~1、2~2、、、を重ねて加算
今日のtmi:
#include <stdio.h>

if(다음주 시험인 사람==&& 공부 안하는 사람==)
{="명랑핫도그 퇴사한";
    printf("%s",);
    printf(" 노답");
}
出力結果:明るいホットドッグが退社する古い道
+よく考えてみると、試験の復習は本当に汚くない.でも.こんなのも体験してみるべきかな?时には試験に失敗するのも挑戦ですが、失敗したのではないでしょうか.このような試験に失敗した経験をしてから、以前の私にできる限りの非難と単位管理に努力するのは価値のあることではないでしょうか.
そう思います.もしあなたが私に聞いたら、私は今試験を復習したくないからです.
だから、これからは前日に何とかしようと思いますが、そんなに努力して試験の復習はしません.
これからは、このような恥知らずな免罪符を通じて、これからの遊びの時間に罪悪感を感じないようにします.
-最高の獣人だ