[C++]白駿27508692411932775
2750ソート
N個の数字が与えられた場合、昇順で並べ替えられたプログラムを作成します.
ソートアルゴリズムを実装する場合,検索が困難(誠実すぎる)ためsort()を用いた.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(void) {
int n;
cin >> n;
vector<int> num(n);
for (int i = 0; i < n; i++) {
cin >> num[i];
}
sort(num.begin(), num.end());
for (int n : num) {
cout << n <<endl;
}
}
2689号カタツムリが登りたい
地面にカタツムリがいます.このカタツムリはVメートルの棒に登る.
カタツムリは昼にAメートルも上がる.でも、夜寝るとBメートル滑る.また、山頂に登ると滑ることはありません.
カタツムリはすべての木の棒に登って、1つのプログラムを編んで何日の時間を求めます
この問題は最初はwhile文で上下を繰り返し、dayを求めるコードで提出されたが、優雅な時間を超えた.うーん、そうじゃないと思うので、状況を半分に分けてみましたが、結局ずっと間違っていました.3回くらい間違えて思ったより時間が多かったです.
考えてみると、熟知した感じがして、中学時代の方程式の感じ、SmillsmilldayをXにして、簡単に公式を求めました.要するに、3日かかるということは、2泊したことを意味し、4日かかると3泊したことを意味します.
上記の例のように、Xの最小値を求めることができる.例えば、右変数が2.22の場合、Xは最小整数値でなければならないので、3である.だからceil()関数を利用してアップロードしました.再びこの問題を見て、盲目的に和弦を打つことができないと感じて、あまりにも簡単で、人を無言にさせます.
#include<iostream>
#include<cmath>
using namespace std;
int main(void) {
int a, b, v;
cin >> a;
cin >> b;
cin >> v;
int day;
day = ceil( (double)(v - b) / (a - b));
cout << day;
}
1924号2007年
今日は2007年1月1日月曜日です.では、2007年x月y日は何曜日ですか.この点を理解するプログラムを作成してください.参考までに、2007年1、3、5、7、8、10、12月は31日、4、6、9、11月は30日、2月は28日まで.
1月1日から入力した日付までを合計し、(月~金)7で残りの演算を行うと、曜日が強調されます.したがって、毎月合計何日格納される配列と出力の2週間配列が作成されます.
考えてみると、12月は保存する必要はなく、丁寧に入れただけです.
#include<iostream>
#include<vector>
using namespace std;
int main(void) {
vector<int> lastDay = { 31,28,31,30,31,30,31,31,30,31,30,31 };
vector<string>day = { "SUN","MON","TUE", "WED", "THU", "FRI", "SAT" };
int month;
int date;
cin >> month;
cin >> date;
int sumDate = 0;
for (int i = 0; i < month-1; i++) {
sumDate += lastDay[i];
}
sumDate += date;
cout << day[sumDate % 7];
}
1193番のスコアを検索
ジグザグ方向に現れる点数を羅列し,必要な変数を見た.まず、方向を変えるたびに、方向に含まれる点数が1つ増えます.
範囲を表すrange変数
idx変数は、範囲内で入力されたXが何番目のスコアであるかを知るために使用されます.
格納範囲の開始と終了のstart変数とend変数(=リスト全体で数番目)
また、対角線の上方に向かう方向であれば、範囲は偶数である.
対角線の下方向に沿って、範囲は奇数です.
これを2つに分けてx番目のスコアを出力します.
#include<iostream>
using namespace std;
int main(void) {
int start = 1;
int end = 1;
int range = 1;
int input;
cin >> input;
while (1) {
if (start <= input && input <= end) {
int idx = input - start;
if (range % 2 == 0) {
cout << 1 + idx << "/" << range - idx;
}
else {
cout << range - idx << "/" << 1 + idx;
}
break;
}
range++;
start = end + 1;
end = start + range-1;
}
}
私は2775番の女性会長になります。
このアパートに住むには条件があり、「a階のb番に住むには、自分の下(a-1)階の1番からb番までの人数で、人を連れて帰って住む」という契約条項を守らなければならない.
アパートに空き家がないと仮定し、すべての住民がこの契約条件を守ったとすると、与えられた正の整数kとnに対して、k階印刷n号に何人が住んでいるのか.しかし、マンションは0階から、各階は1番から、0階のi号はi名である.この家の住人を救い出す.
ループ関数を使うべきかと思いきや、反復文で解く方が早いと思い、反復文で解く.最初は豪瓦楼が数量制限があるかどうか分からなかったので、いっそアパートを建てるのは難しいと思いました.
後で確認しましたが、14階14号に限定されています.
ループ関数よりスタックに入れてプッシュする方が時間がかかるかと思いましたが、振り返ってみると時間がかかりました.そんなに良い方法ではないようです.10階を過ぎても結構時間がかかりました(実際、ループ関数でコード自体を実現する人はもっと簡単に見えます.)
この問題に最も適しているのは、マンションの構造を早期に建てることだと推測されている.問題の制限をよく読むことを見逃さないでください.
#include<iostream>
#include<string>
#include<vector>
#include<utility>
using namespace std;
int main(void) {
//testcase 개수
int t;
cin >> t;
vector<pair<int, int>> testCase(t);
//testcase입력 받음
for (int i = 0; i < t; i++) {
cin >> testCase[i].first;
cin >> testCase[i].second;
}
for (int i = 0; i < t; i++) {
int k = testCase[i].first;
int n = testCase[i].second;
vector<pair<int, int>> position;
position.push_back(make_pair(k, n));
int people = 0;
while (position.size()) {
int tempK = position.back().first;
int tempN = position.back().second;
//cout << tempK << "층" << tempN << "호" << endl;;
position.pop_back();
if (tempN == 1) {
people++;
}
else if (tempK == 0) {
people += tempN;
}
else {
position.push_back(make_pair(tempK, tempN - 1));
position.push_back(make_pair(tempK - 1, tempN));
}
}
cout << people << endl;
}
}
pair<int,int>
2種類の資料型ペアを格納できる構造.vector
#include<utility>
pair<int, int> p = make_pair(2, 3);
cout << p.first << endl; //2출력
cout << p.second << endl; //3출력
Reference
この問題について([C++]白駿27508692411932775), 我々は、より多くの情報をここで見つけました https://velog.io/@goo_ver/C-백준-27502869192411932775テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol