いつもお世話になっております。
プロクラスの國府です。
最近涼しくなってきましたね。皆様お体の方くれぐれもお気をつけください。
今回は、以前テレビを見ていて興味があったので
アルゴリズム実技検定PASTを紹介したいと思います。
公式サイト https://past.atcoder.jp/
そのテレビの動画がyoutubeにアップされていたので、埋め込みます。
IT系の資格は、どちらかというと知識型(選択問題や記述式など)が
多いです。
今回紹介する資格は、与えられた問題をアルゴリズムや論理思考能力や
プログラムの基本知識を使って実際にプログラムを書いて、実行させるという
実践型の資格になっています。
使用するプログラム言語も,PHP, Java, C, Pythonなど多くの言語から
自由に選ぶことができるので、得意な言語で挑戦できます。
使うエディタも制限はありません。
資格に概要について下記のとおりです
- 制限時間は、5時間で15問
- 問題毎に、プログラムの実行時間やメモリの使用量内で、プログラムを動かす必要がある
- インターネット検索や書籍の閲覧は可能
- 合計点数が25点でエントリー、40点で初級、60点で中級、80点で上級、90点でエキスパートに認定されます
- オンライン受験可能、試験費用は、8,800円(税込)
どんな問題がでると、以下のようなものがあり私も挑戦してみました。
問題文
6 つの相異なる整数 A, B, C, D, E, F が与えられる。
このうち 3 番目に大きい数を調べるプログラムを作成せよ。
制約
1≦A,B,C,D,E,F≦100
A,B,C,D,E,F はすべて異なる。
入力中の値はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。
A B C D E F
出力
3 番目に大きい整数を出力せよ。
私が, Python3で作ったプログラムは、下記のとおりです
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# バブルソートで、配列の要素を降順に並べ替える
def bubleSortForDes(nl):
for i inrange(len(nl)):
for j inrange(len(nl)-1, i, -1):
if nl[j] > nl[j-1]:
nl[j], nl[j-1] = nl[j-1], nl[j]
return nl
nl = [int(x) for x in input(‘6つの異なる整数を入力: ‘).split()]
snl = bubleSortForDes(nl)
print(‘3番目に大きい数は {max3}’.format(max3=nl[2]))
整列は、バブルソートを自作しましたが、pythonの組み込み関数 sort を使
うと下記のようになります。すごくコンパクトになりました。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
nl = [int(x) for x in input(‘6つの異なる整数を入力: ‘).split()]
snl = sorted(nl, reverse=True)
print(‘3番目に大きい数は {max3}’.format(max3=snl[2]))
こちらの問題は簡単な問題になります。
プログラム、アルゴリズムに自信のある方は受験してみてはいかがでしょうか。
以上、「アルゴリズム実技検定 PAST」の紹介でした。