[航海]アルゴリズム2週間


'21.06.14

1.四則演算


白駿#10869
###코드###
a,b = map(int, input().split())
print(a+b)
print(a-b)
print(a*b)
print(a//b)
print(a%b)
学習:map(int,input().split()とは何かを知りました.
1)map=特定範囲内の集合形式の(ex-list)を所望の(ex-int,str)に変換する機能
2)input()=外部値を受け入れる関数!Input()を使用する場合は、コンソールウィンドウに値を入力できます.
3)split()=input()のため、コンソールウィンドウに入力した値(ex-2043/カンマx)を分離します.==20、43(カンマO)で区切ります.
受け取った値をinput()に分割し、一度にint属性に変換します!

2.三桁乗算


白駿#2588
###코드###
a = int(input())
b = input()
print(a * int(b[2]))
print(a * int(b[1]))
print(a * int(b[0]))
print(a * int(b))

3.目覚まし時計


白駿#2884
###코드###
a,b = map(int, input().split())
if 0 <= a < 24 and 0 <= b <= 59:
    to_minutes = a*60
    wake_minus = 45
    minutes_result = (to_minutes+b)
    result = minutes_result - wake_minus
    a_result = result//60
    b_result = result%60
    if a_result < 0:
        a_result = 24+a_result
    print(a_result, b_result)

4.プラスサイクル


白駿#1110
###코드###
#1. 정답코드 (int 계산)
import sys
n = int(sys.stdin.readline()) # // int 68
num = n
cnt = 0
while True:
    a = num // 10 # // int 6
    b = num % 10 # // int 8
    c = (a+b) % 10 # // int 1"4" == 나머지 4
    num = (b*10) + c # // 80 + 4
    cnt += 1
    if(num == n):
        break
print(cnt)
重要)
1) sys.stdin.readline:クイック入力!
Input()とは表面的には同じ役割を果たすが,タイムアウトが発生すると高速入力を用いることで効率を向上させることができる.ただし、input()とは異なり、「ユーザが入力した文字列+文字(n)」が保存されるため、str文はstr(sys.stdin.readline.split("n")を使用することが望ましい.
2)while(条件):条件が真の場合、次の文を繰り返し実行します.正解コードが表示されるとwhile True:が表示されます.if文も含まれています.すなわち、while以下のカラムを繰り返しif文の条件で実行すると、構造は停止します.
###코드###
#2. 시간초과 코드 (str 계산)
import sys
n = str(sys.stdin.readline().strip('\n'))
num = n
cnt = 0
while True:
  if len(num) == 1:
      num = "0" + num
  plus = str(int(num[0]) + int(num[1]))  # str '8'
  num = num[-1] + plus[-1]  # str '68' #[-1]
  cnt += 1
  if num == n:
      print(cnt)
      break
重要)
1)str計算結果タイムアウト…:正解コードと異なり、以下ではタイムアウトと判断します.答えコードはintで計算されるので,タイムアウトコードに比べて計算はすべての点で高速である.
出力の結果は同じですが、時間差が大きいです.
2)plusコードで[1]は何ですか.:右端1位の表現のみを選択します.以上のコードで計算するコードはいずれも「2桁」であり,[-1]処理を行わないとplus計算値がnum計算式に直接反映され,「2桁」を返さなければならないnum値が「3桁」になる.(ex:plusが「14」の場合、num=num[-1]+[-1]の場合、num[-1]の末尾「8」とplusの末尾「4」は式に反映され、+[-1]ではなく「84」を返し、plusの場合、「14」をすべて反映して「814」を返すので、結果は間違っています!)