【ABC163에 참가해 보았다】재택 근무가 되었기 때문에 매니지먼트계 SE가 경기 프로그래밍 시작해 보았다. #1 -해설-
11517 단어 C++신인 프로그래머 응원재택근무AtCoder경기 프로그래밍
마지막 기사
지난번에는 AtCoder에 참여한 내 결과와 반성을 보고했습니다.
【ABC163에 참가해 보았다】재택 근무가 되었기 때문에 매니지먼트계 SE가 경기 프로그래밍 시작해 보았다. #1
(수요가 있는지는 전혀 모릅니다만)
이번 기사에서는 제가 해답할 수 있던 ABC 문제에 대해 해설합니다.
A 문제: <A - Circle Pond>
문제문 발췌
해설
원주를 요구하는 문제입니다.
원주는 직경 × 원주율로 구할 수 있네요.
직경에 대해서는 입력값으로 반경을 얻을 수 있으므로 OK! !
그리고 필요한 원주율입니다만 다음과 같이 cmath를 받아들여 M_PI를 사용할 수 있습니다.
problemA.cpp#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, const char * argv[]) {
int r;
cin >> r;
cout << 2*r*M_PI << endl; //M_PIは円周率
return 0;
}
문제분을 잘 읽으면 다음의 기재가 있습니다.
그 때문에 M_PI를 사용하지 않아도 학생 시대가 된 분도 많은 원주율=3.14를 이용할 수도 있습니다.
B문제: <B - Homework>
문제문 발췌
해설
그림에 쓰면 이미지가 붙기 쉽다고 생각합니다.
라는 것은 모든 숙제를 끝내기 위해서는 이런 이미지가 되는 것을 알 수 있다고 생각합니다.
그리고 필요한 것은 「다카하시군이 여름방학(N일)의 사이에 숙제를 끝낼 수 있을까」를 판정하는 것입니다.
problemB.cpp#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int n,m;
cin >> n >> m;
int a[m];
for(int i=0; i<m; i++) cin >> a[i];
int total = 0;
for(int i=0; i<m; i++){
total += a[i]; //宿題日数を足し合わせ
}
int judge = n-total; //夏休みの日数から宿題のトータル日数をマイナス
if(judge<0) //はたして高橋君は宿題を終えることができるのか。。
cout << "-1" << endl;
else
cout << judge << endl;
return 0;
}
C문제: <C - management>
문제문 발췌
해설
이쪽도 B문제와 같이 그림에 쓰면 알 수 있다고 생각합니다.
실제 입력 예를 바탕으로 좀 더 이미지를 부풀립니다.
이 입력 예에서는 다음과 같은 관계가 있습니다.
이것뿐이라고 나도 당일 그다지 이미지를 몰랐기 때문에,
또 한 단계로서 실제로 상사와 부하의 관계를 피라미드적으로 써 봅니다.
이것으로 이미지가 붙었습니까? ?
중요한 점은 직원 번호 #1의 사람은 반드시 부하가 있다(상사이다)라는 것입니다.
이것들을 근거로 코드를 기재합니다.
problemC.cpp#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int n;
cin >> n;
int a[n];
a[1] = 0; //社員番号#1(a[1])は一番偉いから上司はいない
for(int i=2; i<=n; i++) cin >> a[i]; //社員番号#2〜#Nの上司の人数を入力
int ans[n];
for(int i=1; i<=n; i++) ans[i] = 0; //配列の初期化
int tmp;
for(int i=1; i<=n; i++){
tmp = a[i];
ans[tmp]++; //社員番号#iの上司である人の社員番号a[i]をカウント
}
for(int i=1; i<=n; i++) cout << ans[i] << endl; //カウントした結果を出力
return 0;
}
마지막으로
어땠습니까?
해설을 기재하는 것도 처음이므로, 봐도 모르겠다고 좀 더 이렇게 하면 좋은 것이 아닌가? 같은 따뜻한 말 두시도시 기다리고 있습니다.
Reference
이 문제에 관하여(【ABC163에 참가해 보았다】재택 근무가 되었기 때문에 매니지먼트계 SE가 경기 프로그래밍 시작해 보았다. #1 -해설-), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makom/items/74f99995454c9e6499e9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
문제문 발췌
해설
원주를 요구하는 문제입니다.
원주는 직경 × 원주율로 구할 수 있네요.
직경에 대해서는 입력값으로 반경을 얻을 수 있으므로 OK! !
그리고 필요한 원주율입니다만 다음과 같이 cmath를 받아들여 M_PI를 사용할 수 있습니다.
problemA.cpp
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, const char * argv[]) {
int r;
cin >> r;
cout << 2*r*M_PI << endl; //M_PIは円周率
return 0;
}
문제분을 잘 읽으면 다음의 기재가 있습니다.
그 때문에 M_PI를 사용하지 않아도 학생 시대가 된 분도 많은 원주율=3.14를 이용할 수도 있습니다.
B문제: <B - Homework>
문제문 발췌
해설
그림에 쓰면 이미지가 붙기 쉽다고 생각합니다.
라는 것은 모든 숙제를 끝내기 위해서는 이런 이미지가 되는 것을 알 수 있다고 생각합니다.
그리고 필요한 것은 「다카하시군이 여름방학(N일)의 사이에 숙제를 끝낼 수 있을까」를 판정하는 것입니다.
problemB.cpp#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int n,m;
cin >> n >> m;
int a[m];
for(int i=0; i<m; i++) cin >> a[i];
int total = 0;
for(int i=0; i<m; i++){
total += a[i]; //宿題日数を足し合わせ
}
int judge = n-total; //夏休みの日数から宿題のトータル日数をマイナス
if(judge<0) //はたして高橋君は宿題を終えることができるのか。。
cout << "-1" << endl;
else
cout << judge << endl;
return 0;
}
C문제: <C - management>
문제문 발췌
해설
이쪽도 B문제와 같이 그림에 쓰면 알 수 있다고 생각합니다.
실제 입력 예를 바탕으로 좀 더 이미지를 부풀립니다.
이 입력 예에서는 다음과 같은 관계가 있습니다.
이것뿐이라고 나도 당일 그다지 이미지를 몰랐기 때문에,
또 한 단계로서 실제로 상사와 부하의 관계를 피라미드적으로 써 봅니다.
이것으로 이미지가 붙었습니까? ?
중요한 점은 직원 번호 #1의 사람은 반드시 부하가 있다(상사이다)라는 것입니다.
이것들을 근거로 코드를 기재합니다.
problemC.cpp#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int n;
cin >> n;
int a[n];
a[1] = 0; //社員番号#1(a[1])は一番偉いから上司はいない
for(int i=2; i<=n; i++) cin >> a[i]; //社員番号#2〜#Nの上司の人数を入力
int ans[n];
for(int i=1; i<=n; i++) ans[i] = 0; //配列の初期化
int tmp;
for(int i=1; i<=n; i++){
tmp = a[i];
ans[tmp]++; //社員番号#iの上司である人の社員番号a[i]をカウント
}
for(int i=1; i<=n; i++) cout << ans[i] << endl; //カウントした結果を出力
return 0;
}
마지막으로
어땠습니까?
해설을 기재하는 것도 처음이므로, 봐도 모르겠다고 좀 더 이렇게 하면 좋은 것이 아닌가? 같은 따뜻한 말 두시도시 기다리고 있습니다.
Reference
이 문제에 관하여(【ABC163에 참가해 보았다】재택 근무가 되었기 때문에 매니지먼트계 SE가 경기 프로그래밍 시작해 보았다. #1 -해설-), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makom/items/74f99995454c9e6499e9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int n,m;
cin >> n >> m;
int a[m];
for(int i=0; i<m; i++) cin >> a[i];
int total = 0;
for(int i=0; i<m; i++){
total += a[i]; //宿題日数を足し合わせ
}
int judge = n-total; //夏休みの日数から宿題のトータル日数をマイナス
if(judge<0) //はたして高橋君は宿題を終えることができるのか。。
cout << "-1" << endl;
else
cout << judge << endl;
return 0;
}
문제문 발췌
해설
이쪽도 B문제와 같이 그림에 쓰면 알 수 있다고 생각합니다.
실제 입력 예를 바탕으로 좀 더 이미지를 부풀립니다.
이 입력 예에서는 다음과 같은 관계가 있습니다.
이것뿐이라고 나도 당일 그다지 이미지를 몰랐기 때문에,
또 한 단계로서 실제로 상사와 부하의 관계를 피라미드적으로 써 봅니다.
이것으로 이미지가 붙었습니까? ?
중요한 점은 직원 번호 #1의 사람은 반드시 부하가 있다(상사이다)라는 것입니다.
이것들을 근거로 코드를 기재합니다.
problemC.cpp
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int n;
cin >> n;
int a[n];
a[1] = 0; //社員番号#1(a[1])は一番偉いから上司はいない
for(int i=2; i<=n; i++) cin >> a[i]; //社員番号#2〜#Nの上司の人数を入力
int ans[n];
for(int i=1; i<=n; i++) ans[i] = 0; //配列の初期化
int tmp;
for(int i=1; i<=n; i++){
tmp = a[i];
ans[tmp]++; //社員番号#iの上司である人の社員番号a[i]をカウント
}
for(int i=1; i<=n; i++) cout << ans[i] << endl; //カウントした結果を出力
return 0;
}
마지막으로
어땠습니까?
해설을 기재하는 것도 처음이므로, 봐도 모르겠다고 좀 더 이렇게 하면 좋은 것이 아닌가? 같은 따뜻한 말 두시도시 기다리고 있습니다.
Reference
이 문제에 관하여(【ABC163에 참가해 보았다】재택 근무가 되었기 때문에 매니지먼트계 SE가 경기 프로그래밍 시작해 보았다. #1 -해설-), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makom/items/74f99995454c9e6499e9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【ABC163에 참가해 보았다】재택 근무가 되었기 때문에 매니지먼트계 SE가 경기 프로그래밍 시작해 보았다. #1 -해설-), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/makom/items/74f99995454c9e6499e9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)