oniwan111’s blog

学生が少しでも社会の役に立てればいいなと思って始めたブログです

AtCoder Beginner Contest 004 in Python

ABC 004 のA-C問題解いてみました
以下、解答です

A.

#input
N = int(raw_input())
     
#output
print 2 * N

B.

#prepare
c = []

w = []
x = []
y = []
z = []


#input
for i in range(4):
    c.append(map(str,raw_input().split()))

#rotate
w = c[0]
x = c[1]
y = c[2]
z = c[3]

for j in range(4):
    print z[3-j],
print
for k in range(4):
    print y[3-k],
print
for l in range(4):
    print x[3-l],
print
for m in range(4):
    print w[3-m],
print

C.

#prepare
X = ['1','2','3','4','5','6']


#input
N = int(raw_input())
n = N%30
#calculate
for i in range(n):
    S = i % 5 + 1
    T = i % 5 + 2
    X[S-1],X[T-1]= X[T-1],X[S-1]


#output
print ''.join(X)

Bがとても汚くなった笑
Bで学んだのは、

print 'hogehoge' , 

と、[,]をつけることで改行ではなく、半角スペースを出力することができるようです
そして今回C問題で学んだことは、
print ''.join(X)
と書くことで、配列をくっつけて問題で示されているように出力させることができるようです

AtCoder Beginner Contest 003 in Python C

問題といてるうちにほぼ3日くらいでC問題解けるようになりました笑
地道に問題を調べながら、WAとREと戦うとできるようになってきますね

C.

#prepare
C = float(0)
R = []

#input
N, K = map(int, raw_input().split())
R = map(float,raw_input().split())

#sort ascending
R.sort()

#delete minimum number
for i in range(N-K):
    del R[0]

#calculate
for j in R:
    C = (C + j) / 2

#output
print C

この問題は上からK番目まで大きいのを取り出す必要があったので、
N-K番目までをリストから削除して、
あとは、下から計算をさせました

R[i]とかやると、ミスります笑
一回やらかしました

もっと綺麗にコードを書けるようになりたいものです

AtCoder Beginner Contest 049 in Python C

C問題解いてみました
正規表現を勉強したので、使ってみます


C.

#import library
import re

#prepare
S = ''
T = ''
regex = r'(dream|dreamer|erase|eraser)+$'

#input
S = raw_input()

#output
if re.match(regex,S):
    print 'YES'
else:
    print 'NO'

以下のサイトから引用します

uxmilk.jp

$ 文字列の末尾

  1. 一回以上の繰り返し
 和集合

() グループ化

これで、
(dream|dreamer|erase|eraser)+$
は、'dream','dreamer','erase','eraser'のどれかを末尾から一回以上繰り返す
ってことになるんだと思います(多分)

なんとかC問題を解けるようになりたい!

AtCoder Beginner Contest 002 in Python

ABC 002の問題を解いてみました.
B問題は勉強のために正規表現を使ってみました.

僕の競技プログラミングの目的は,すごい成績を出すことではなく,プログラミングの勉強なので時間かかっても一問ずつ解いていこうと思います.

A.

#input
X, Y = map(int,raw_input().split())
 
#output
print max(X,Y)

競技プログラミングの入力ができるようになるまでに大変時間がかかりました笑
以下のサイトを参考にして勉強しました.
この記事で大体の入力は事足りる気がします

[http://qiita.com/lethe2211/items/6cbade2bc547649bc040:embed:cite]

B.

>|python|
#import library
import re
  
#input
 
W = ''
W = raw_input()
 
#regular expression 
regex = r'[aiueo]' 
result = re.sub(regex,'',W)

#output
print result

いっぱい解答は転がっているんですけど,正規表現使ってみたかったので使ってみました
[aiueo],これをre.sub()を使って取り除けばいけました

AtCoder Beginner Contest 001 in Python

ABC 001 のコードです.

A.

#input
 
H1 = int(raw_input())
H2 = int(raw_input())
 
#output
print H1 - H2


B.

#input
m = int(raw_input())
 
d=0
 
if m<100:
	d=0
elif m<=5000:
	d=m/100
elif m<=30000:
	d=m/1000+50
elif m<=70000:
	d=(m/1000-30)/5+80
elif m>70000:
	d=89
 
print "%02d" % d

%なんちゃらってのは,Cのプログラミングの授業でやったなあと思い出す.
これは,フォーマット表記というものらしい(たぶん)

この問題を解いた後に,AtCoderの結果から他人のコードを見れることに気付き,記事にする意義を見失いましたが,
AtCoderさんに雑魚い地方国立大生のプログラミングの勉強の役に立ってるよってことを知らせるためにやっていこうと思います.
(あと,千葉大工学部受けたor入学した人にこんな風に勉強していけばいいんだってことをわかってもらえたら嬉しいです)

AtCoder Beginner Contest 049 in Python

ABC 049 解いてみました
C以降はまた今度


まずは、B問題までを全部解いてみようと思います

A.

#input

c = str(raw_input())

#judge

if c == 'a':
    print 'vowel'
elif c == 'i':
    print 'vowel'
elif c == 'u':
    print 'vowel'
elif c == 'e':
    print 'vowel'
elif c == 'o':
    print 'vowel'
else:
    print 'consonant'

B.

#prepare
Char = ''
#input
H, W = map(int,raw_input().split())

for i in range(H):
    Char = raw_input()
    print '%s\n%s\n' %(Char,Char)

AtCoder Beginner Contest 050 in Python

AtCoder Beginner Contest (ABC) 050解いてみました

A.


#input
N = raw_input()
A = []
A = raw_input().split()
A1 = A[:]
#even or odd

#N = odd
if N % 2 == 1:
    for i in range(N):
        if A1[i] % 2 == 0:
            A1[i] = True
        else:
             A1[i] = False
    if all(A1) == True:
        mx = max(A)
        print ( mx / 2 ) ** 2
    else:
        print 0

#N = even
elif N % 2 == 0:
    for j in range(N):
        if A1[i] % 2 == 1:
            A1[i] = True
        else:
            A1[i] = False
    if all(A1) == True:
        mx = max(A)
        print ( (mx + 1) / 2 ) ** 2
    else:
        print 0

B.

#input
T = []
N = int(raw_input())
T = raw_input().split()
M = int(raw_input())
PX = []
X = 0
T1 = []

#input matrix
for i in range(M):
    PX.append(map(int,raw_input().split()))


for j in range(M):
    #new time
    T1 = T[:]
    PJ = PX[j][0]
    XJ = PX[j][1]
    a = int(PJ)
    b = int(XJ)
    T1[a-1] = b
    
    #plus each time
    X = 0
    for k in range(N):
            X += int(T1[k])
    print X

C.勉強中
D.まだ無理

まだまだ勉強中です
もっと良いコードを教えてください