Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第1回競技プログラミング勉強会

Avatar for spin13 spin13
April 27, 2018

 第1回競技プログラミング勉強会

Avatar for spin13

spin13

April 27, 2018

Other Decks in Programming

Transcript

  1. 概要 x, yが与えられるので y / x を出力 x, y =

    map(int, input().split()) print(int(y / x)) # 小数点以下を出さないため
  2. S = input() ans = '' # ASCIIコード表で a以上 z以下であれば小文字

    if 'a' <= S[0] and S[0] <= 'z': # ASCIIコードを-32すると小文字の場合は大文字になる ans += chr(ord(S[0]) - 32) else: # 大文字だったらそのまま入れる ans += S[0] # 2文字目以降は小文字に変換 for i in range(1, len(S)): # 大文字かどうか if 'A' <= S[i] and S[i] <= 'Z': # 小文字に変換する場合は +32する ans += chr(ord(S[i]) + 32) else: ans += S[i] print(ans)
  3. 解法例 【秒→時間への変換】 1時間は60秒*60分なので 時間 = N秒 / (60 * 60)

    【秒→分への変換】 1分は60秒なので N / 60 ただし時間も考慮しないといけないので, 60分で割った余りを出す 分 = N / 60 % 60 秒は 60で割った余り
  4. 解法例1 N = int(input()) # 3つ先だと配列外参照してしまう場合があるのでてきとうにつけておく S = input() +

    '......' sum = 0 # iは現在位置を示す i = 0 while i < N: # 現在位置から3つ先が . だったら3つ先のマスに進む if S[i+3] == '.': i += 3 elif S[i+2] == '.': i += 2 elif S[i+1] == '.': i += 1 # 現在位置から1~3つ先全てがxだった場合は,3つ先まで進んで # 水たまりを踏んだ回数 (sum)に1を足す else: i += 3 sum += 1 print(sum)
  5. 解答例2 N = int(input()) # 水たまりの無い部分で分割 S = input().split('.') sum

    = 0 # 分割した要素に対してループ # 区切り文字で指定したものは勝手に空文字列が入っているので 気にしなくてもおk for i in S: # 3で割った値を答えの変数に足す sum += len(i) / 3 print(int(sum))