import sys
coop = []
head,*data = sys.stdin.read().splitlines()
row, col = map(int,head.split())
for i in range(row):
line = data[i]
if '1' in line:
j = line.split().index('1')
coop+=[i,j]
if len(coop) == 4:
print(abs(coop[0] - coop[2]) + abs(coop[1] - coop[3]))
sys.exit()
32ms코드.
두개의 1의 좌표를 구해서 식에 넣기만 하면 되는 문제.
1을 찾을 때 연산을 줄이려고 문자열 상태로 받아서 찾은 뒤 인덱스 찾을 때 라인을 스플릿했다.
굳이 안 해도 되는 건 꼭 필요할 때 까지 미루는 방법.
시도 과정에서 splitlines()를 쓰게 되었고, 그 전까지 1차원으로 불러오면서 생기던 단점이 커버되었다.
os대신 sys를 쓰면서 exit를 조합하면 os보다 빠를 수 있다.
아래는 52ms짜리 코드인데 스플릿 위치만 다르다.
import sys
coop = []
head,*data = sys.stdin.read().splitlines()
row, col = map(int,head.split())
for i in range(row):
line = data[i].split()
if '1' in line:
j = line.index('1')
coop+=[i,j]
if len(coop) == 4:
print(abs(coop[0] - coop[2]) + abs(coop[1] - coop[3]))
sys.exit()