2019年3月25日 | ブログ記事

春休みのpythonの進捗について【アドベントカレンダー2019 17日目】

owl

この記事はtraP Advent Calendar 2019 3月25日の記事です。


2回目の投稿になります。owlです。
今回は自分が春にしたプログラミングの進捗について話していきたいと思います。
プログラミングに関してまだ初心者なので、ざっくりとしか話せませんが最後まで内容を見ていただければ嬉しいです。

プログラミング環境の実装について

まずプログラミング環境の実装について話したいと思います。
自分はpythonでコードを書いているのでpythonの環境での実装について書いていきたいと思います。
自分はProgateという記事を参考にして行いました。
(Windowsの方向けの記事がこちらでMacの方向けの記事がこちらになっています。)
また、テキストエディタとターミナルに関してなのですが、ここではAtomとコマンドプロンプトを使用しているのですが、個人的にはVSCodeが元々ターミナルがついており、便利だなぁと感じたのでそちらを使用しています。VSCodeのダウンロードに関してはこちらのサイトが適切ではないかと思います。

赤線で囲われた部分がターミナル部分となっています。

Progateでの学習

自分が先ほど述べたProgateについてなのですが、既知の方もいらっしゃるとは思いますが、一応説明します。

Progateとはプログラミングの基礎についてパソコンで実際に体感して学習できることができるもので、課題のヒントを見る\toそれを参考に実際に課題を解くという2段階で分けられていてどのようにコードを書いていけばという導入部分を理解することができます。(このような感じで学習することができます。図を2枚添付しましたので参考に)

また、現在の段階ではありますが、traPではProgateをチーム単位で登録しているので実質部費さえ払えばタダで使用できます。Progateの長所は実際に紙でなく、パソコンを使用して自学習できることだと思っています。自分もこれでpythonについて学習しました。気になった人は試しにログインしてやってみるといいと思います。

ちなみにProgateのURLはこちらです

At Coderについて

自分はまだAtCoderについて過去問しか解いていない段階ですがほんの少しだけ触れて終わりにしたいと思います。

AtCoderとはプログラミングのコンテストを行っているサイトで、リアルタイムでコンテストを行っていたり、以前に行われた過去問などに取り組むことができます。(僕はまだコンテストに参加したことはありませんが…)

AtCoderに登録したけど、何をするべきかについて分からないという方は @drken さんが書いた AtCoderに登録したら次にやること~これだけ解けば十分闘える!過去問精選10問~ を参考にするといいと思います。

自分は現時点でこの過去問の中からpythonで最初から5題ほど解いてみたのでどういう風に行ったのかを説明したいと思います。(どちらかといえば自分がどのように考えたかを纏めたいという意図が強いですがどうかご付き合い下さい。)

第 1 問:ABC086A Product


[問題概要]

2つの正の整数、aa, bb の積が偶数か奇数かを判断してください。

[制約]

[解法]

a, b = map(int, input().split())
if a*b % 2 == 1:
    print('Odd')
else:
    print('Even')

第 2 問:ABC081A Placing Marbles


[問題概要]

0 と 1 のみから成る 3 桁の番号 s が与えられます。1 が何個含まれるかを求めてください。

[制約]

s1,s2,s3s_1,s_2,s_3は '1' 、あるいは '0'

[解法]

s = input()
print(s.count('1'))

第 3 問:ABC081B Shift Only


[問題概要]

黒板に NN 個の正の整数 A1,...,ANA_1,...,A_N が書かれています。
すぬけ君は,黒板に書かれている整数がすべて偶数であるとき,次の操作を行うことができます。

すぬけ君は最大で何回操作を行うことができるかを求めてください。

[制約]

[解法]

N = int(input())
A = list(map(int,input().split()))
c = 1000000
for i in range(len(A)):
    tmp = 0
    while A[i]%2 == 0:
        tmp += 1
        A[i] //= 2
    c = min(c,tmp)
print(c)

第 4 問:ABC087B Coins


[問題概要]

500 円玉を AA 枚、100 円玉を BB 枚、50 円玉を CC 枚持っています。これらの硬貨の中から何枚かを選び、合計金額をちょうど XX 円にする方法は何通りあるでしょうか?

[制約]

[解法]

A = int(input())
B = int(input())
C = int(input())
X = int(input())
tmp = 0
for a in range(0,(A+1)):
    for b in range(0,(B+1)):
        for c in range(0,(C+1)):
            total = 500*a + 100*b + 50*c
            if total == X:
                tmp += 1    
print(tmp)

第 5 問:ABC083B Some Sums


[問題概要]

1 以上 NN 以下の整数のうち、10 進法での各桁の和が AA 以上 BB 以下であるものの総和を求めてください。

[制約]

[解法]

N, A, B = map(int, input().split())
ans = 0
for i in range(N+1):
    if A <= sum([int(i) for i in str(i)]) <= B:
        ans += i
print(ans)  

最後に

自分は春休みにプログラミングを始めましたが、プログラムというともっと難いイメージがあったのですが、意外とパズル感覚で解けて楽しいですし(勿論まだABCのA問題しか十分に解けていないだけであるからかもしれませんが)、コンテストなどに参加せずゆっくり過去問を解いて勉強するのもアリだと思います。自分は元々生物の勉強に飽きた時に何か遊べそうなものはないかという感じで始めた人なので変に意気込まずに趣味の範囲内でゆるりとやっていきたいと思います。


明日はtyoxuさんの記事です。お楽しみに。

この記事を書いた人
owl

何かしたいです。

この記事をシェア

このエントリーをはてなブックマークに追加

関連する記事

2019年4月24日
gnuplotで遊ぼう
mds_boy
2019年4月22日
アセンブリを読んでみよう【新歓ブログリレー2019 45日目】
eiya
2019年4月8日
プログラミングを始めよう【新歓ブログリレー2019 31日目】
idaten
2019年3月18日
競プロの最善手
topaz
2019年3月16日
競技プログラミングを始めよう【新歓ブログリレー2019 8日目】
eiya
2019年11月1日
6つの記号でjavascript【アドベントカレンダー2019 2日目】
Koube

活動の紹介

カテゴリ

タグ