これがコードテストとPython|実装①

2533 ワード

実施とは?


これは、問題が容易に見られ、問題が解決されることを意味しますが、実際にはコードでは解決しにくい問題です.
個別のタイプではありませんが、符号化テストで頻繁に現れるタイプだそうです.

(!???専門的な課題をしているときによく感じる感情ではないでしょうか?)

実装アルゴリズムの典型的な例


1)上下左右


問題説明が長いので、インターセプトにYouTubeの問題説明が収録されています.
羅東彬のYouTubeレッスンへのショートカット


👇 問題に答える前に書いたコード
N=int(input()) # 공간의 크기 N
path=input().split() # 이동할 경로
row=1 #행
col=1 #열
for i in range (0,len(path)):
  if path[i]=="L": #열을 한칸 이동
    if col==1:
      continue # 공간밖은 무시
    col-=1
  elif path[i]=="R": #열을 한칸 이동
    if col==N:
      continue
    col+=1
  elif path[i]=="U": #행을 한칸 이동
    if row==1:
      continue
    row-=1
  else: #path[i]=="D" #행을 한칸 이동
    if row==N:
      continue
    row+=1
print(row,col)
空間外のパスを無視する条件が正しく見られないため、実行結果とサンプルの答えが異なります.
問題の条件をよく調べなければならない
📌回答例を表示してフィードバック
グリディアルゴリズムのおつりの例のように、R、U、D、L、および対応する距離移動をリストにすると、コードがより簡潔になる可能性があります.
👇 フィードバック後コード
N=int(input()) # 공간의 크기 N
path=input().split() # 이동할 경로
row=1 #행
col=1 #열
move_types_row=[0,0,-1,1]
move_types_col=[-1,1,0,0]
path_types=["L","R","U","D"]

for plan in path:
  for i in range(len(path_types)):
    if plan==path_types[i]:
      nr=row+move_types_row[i]
      nc=col+move_types_col[i]
  if nr>N or nr<1 or nc>N or nc<1:
    continue
  row=nr
  col=nc
print(row,col)

2)視角


入力したNから、00時00分00秒からN時59分59秒までの全時刻のうち、1つでも3が含まれている全ての場合の個数を求める.
👇 問題に答える前に書いたコード
N=int(input())
ct=0
for i in range(N+1):
  for j in range(60):
    for k in range(60):
      if i==3 or j==3 or k==3:
        ct+=1
print(ct)
📌回答例を表示してフィードバック
考えすぎるのは毒だ.私が書いたコードに移動すると、3に等しい場合ではなく、3を含む場合です.
13分、23秒は回数に含まれません.
13をint型と見なすのではなくstr型で文字列「13」に「3」が含まれているかどうかをチェックします.
👇 フィードバック後コード
N=int(input())
ct=0
for i in range(N+1):
  for j in range(60):
    for k in range(60):
      if '3' in str(i)+str(j)+str(k):
        #만약 23시 59분 28초라면 => 235928 로 된다
        ct+=1
print(ct)