プログラマアクセス長
9940 ワード
https://programmers.co.kr/learn/courses/30/lessons/49994
使用するデータ構造/アルゴリズム
dictionaryを使用して、パスがアクセス済みパスであるかどうかを確認します.
defaultdict(bool)を使用してデフォルト値をfalseとして保存し、移動するたびにパスにアクセスしたかどうかを確認し、応答を1増加させます.
コード#コード#
重複を解消するのに最も有効な資料構造はsetです.
これにより、コードをより簡単にすることができます.
改良されたコード
使用するデータ構造/アルゴリズム
dictionaryを使用して、パスがアクセス済みパスであるかどうかを確認します.
defaultdict(bool)を使用してデフォルト値をfalseとして保存し、移動するたびにパスにアクセスしたかどうかを確認し、応答を1増加させます.
コード#コード#
from collections import defaultdict
def solution(dirs):
visited = defaultdict(bool)
dx = {'L':0, 'R':0, 'U':1, 'D':-1}
dy = {'L':-1, 'R':1, 'U':0, 'D':0}
x, y, answer = 5, 5, 0
for dir in dirs:
nx, ny = x+dx[dir], y+dy[dir]
if nx<0 or nx>10 or ny<0 or ny>10:
continue
if not visited[(x, y, nx, ny)] and not visited[(nx, ny, x, y)]:
answer += 1
visited[(x, y, nx, ny)] = True
x, y = nx, ny
return answer
コード改善方向重複を解消するのに最も有効な資料構造はsetです.
これにより、コードをより簡単にすることができます.
改良されたコード
def solution(dirs):
visited = set()
dx = {'L':0, 'R':0, 'U':1, 'D':-1}
dy = {'L':-1, 'R':1, 'U':0, 'D':0}
x, y = 0, 0
for dir in dirs:
nx, ny = x+dx[dir], y+dy[dir]
if nx<-5 or nx>5 or ny<-5 or ny>5:
continue
visited.add((x, y, nx, ny))
visited.add((nx, ny, x, y))
x, y = nx, ny
return len(visited) // 2
Reference
この問題について(プログラマアクセス長), 我々は、より多くの情報をここで見つけました https://velog.io/@jadenkim5179/프로그래머스-방문-길이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol