728x90
728x90
문제
정답
def solution(park, routes):
answer = []
# 명령 무시 조건
# 1. 주어진 방향으로 이동할 때 공원을 벗어나는지
# 2. 주어진 방향으로 이동 중 장애물을 만나는지 확인
p = []
l = r = 0 # 시작 인덱스
for i in park:
p.append(list(i))
for i in range(len(routes)):
routes[i] = routes[i].split(' ')
for i in range(len(p)):
for j in range(len(p[i])):
if p[i][j] == 'S':
l = i
r = j
le = len(p[0])
for a, b in routes:
if a == 'E':
flag = True
for i in range(r, r+int(b)+1):
if l < 0 or r+int(b) < 0 or l >= le or r+int(b) >= le:
flag = False
break
elif p[l][i] == 'X':
flag = False
break
if flag == True:
r += int(b)
elif a == 'S':
flag = True
for i in range(l, l+int(b)+1):
if l+int(b) < 0 or r < 0 or l+int(b) >= le or r >= le:
flag = False
break
elif p[i][r] == 'X':
flag = False
break
if flag == True:
l += int(b)
elif a == 'N':
flag = True
for i in range(l, l-int(b)-1, -1):
if l-int(b) < 0 or r < 0 or l-int(b) >= le or r >= le:
flag = False
break
elif p[i][r] == 'X':
flag = False
break
if flag == True:
l-= int(b)
elif a == 'W':
flag = True
for i in range(r, r-int(b)-1, -1):
if l < 0 or r-int(b) < 0 or l >= le or r-int(b) >= le:
flag = False
break
elif p[l][i] == 'X':
flag = False
break
if flag == True:
r-= int(b)
answer.append(l)
answer.append(r)
return answer
후기
Lv.1 임에도 불구하고 정답률이 30%인 문제
나온 지 얼마 안 된 문제라 참고할 만한 코드가 많이 없었다. 어떻게든 풀긴 풀었는데 좋은 코드인지 잘 모르겠다..
코드 개선사항 있으면 말씀해 주세요 !
728x90
728x90
728x90
728x90
문제
정답
def solution(park, routes):
answer = []
# 명령 무시 조건
# 1. 주어진 방향으로 이동할 때 공원을 벗어나는지
# 2. 주어진 방향으로 이동 중 장애물을 만나는지 확인
p = []
l = r = 0 # 시작 인덱스
for i in park:
p.append(list(i))
for i in range(len(routes)):
routes[i] = routes[i].split(' ')
for i in range(len(p)):
for j in range(len(p[i])):
if p[i][j] == 'S':
l = i
r = j
le = len(p[0])
for a, b in routes:
if a == 'E':
flag = True
for i in range(r, r+int(b)+1):
if l < 0 or r+int(b) < 0 or l >= le or r+int(b) >= le:
flag = False
break
elif p[l][i] == 'X':
flag = False
break
if flag == True:
r += int(b)
elif a == 'S':
flag = True
for i in range(l, l+int(b)+1):
if l+int(b) < 0 or r < 0 or l+int(b) >= le or r >= le:
flag = False
break
elif p[i][r] == 'X':
flag = False
break
if flag == True:
l += int(b)
elif a == 'N':
flag = True
for i in range(l, l-int(b)-1, -1):
if l-int(b) < 0 or r < 0 or l-int(b) >= le or r >= le:
flag = False
break
elif p[i][r] == 'X':
flag = False
break
if flag == True:
l-= int(b)
elif a == 'W':
flag = True
for i in range(r, r-int(b)-1, -1):
if l < 0 or r-int(b) < 0 or l >= le or r-int(b) >= le:
flag = False
break
elif p[l][i] == 'X':
flag = False
break
if flag == True:
r-= int(b)
answer.append(l)
answer.append(r)
return answer
후기
Lv.1 임에도 불구하고 정답률이 30%인 문제
나온 지 얼마 안 된 문제라 참고할 만한 코드가 많이 없었다. 어떻게든 풀긴 풀었는데 좋은 코드인지 잘 모르겠다..
코드 개선사항 있으면 말씀해 주세요 !
728x90
728x90