https://www.acmicpc.net/problem/17114
17114번: 하이퍼 토마토첫 줄에는 문제의 설명에서 창고의 크기를 나타내는 자연수 m, n, o, p, q, r, s, t, u, v, w가 주어진다. 단, 1 ≤ mnopqrstuvw ≤ 106 이다. 둘째 줄부터는 창고에 저장된 토마토들의 정보가 주어진다. 창www.acmicpc.net
토마토3
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
오기생겨서 1시간은 쓴듯하다.
다 아는 개념이여도, 변수가많아지니 헷갈린다. 변수명 아무렇게나 짓다가 변수겹처서 틀린것도 셀 수 없다.
그냥 재미용
move1=[1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
move2=[0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
move3=[0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
move4=[0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
move5=[0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0]
move6=[0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0]
move7=[0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0]
move8=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0]
move9=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0]
move10=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0]
move11=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1]
# def bfs(m, n, o, p, q, r, s, t, u, v, w):def bfs(): while que:
ww,vv,uu,tt,ss,rr,qq,pp,oo,nn,mm,value=que.popleft()
for i in range(22): mmm= mm+move1[i]
nnn= nn+move2[i] ooo= oo+move3[i]
ppp= pp+move4[i] qqq= qq+move5[i]
rrr= rr+move6[i] sss= ss+move7[i]
ttt= tt+move8[i] uuu= uu+move9[i]
vvv= vv+move10[i] www= ww+move11[i]
if 0<=mmm<m and 0<=nnn<n and 0<=ooo<o and 0<=ppp<p and 0<=qqq<q and 0<=rrr<r and \
0<=sss<s and 0<=ttt<t and 0<=uuu<u and 0<=vvv<v and 0<=www<w and\
arr[www][vvv][uuu][ttt][sss][rrr][qqq][ppp][ooo][nnn][mmm] =='0':
que.append([www,vvv,uuu,ttt,sss,rrr,qqq,ppp,ooo,nnn,mmm,value+1])
arr[www][vvv][uuu][ttt][sss][rrr][qqq][ppp][ooo][nnn][mmm]='-1'
for ww in range(w): for vv in range(v):
for uu in range(u): for tt in range(t):
for ss in range(s):
for rr in range(r):
for qq in range(q):
for pp in range(p):
for oo in range(o):
for nn in range(n):
for mm in range(m):
if arr[ww][vv][uu][tt][ss][rr][qq][pp][oo][nn][mm]=='0':
print(-1)
return print(value)
import sysinput=sys.stdin.readlinefrom collections import deque
m, n, o, p, q, r, s, t, u, v, w=map(int,input().split())arr=[
[[[[[[[[[list(input().split()) for _ in range(n) ] for _ in range(o)
] for _ in range(p) ] for _ in range(q) ] for _ in range(r)
] for _ in range(s) ] for _ in range(t) ] for _ in range(u)
] for _ in range(v) ] for _ in range(w) ]que=deque()for ww in range(w):
for vv in range(v): for uu in range(u):
for tt in range(t): for ss in range(s):
for rr in range(r):
for qq in range(q):
for pp in range(p):
for oo in range(o):
for nn in range(n):
for mm in range(m):
# print('test',ww,vv,uu,tt,ss,rr,qq,pp,oo,nn,mm)
if arr[ww][vv][uu][tt][ss][rr][qq][pp][oo][nn][mm]=='1':
que.append([ww,vv,uu,tt,ss,rr,qq,pp,oo,nn,mm,0])
arr[ww][vv][uu][tt][ss][rr][qq][pp][oo][nn][mm]='-1'
bfs()이렇게짜면 답은 맞지만 파이썬이 견디질 못한다.
pypy로 하면 시간초과를 없앨 수 있다.
근데 ㅆ@발 ㅈ같은거는
나보다 훨씬 짧은코딩으로 훨씬 빠르계 게산하는 ㅁㅊㄴ들이 있다.
코드를 봐도 이해가 안된다.
난평생가도 모를것같다.
나중에 숙련도좀 올리고 한번 시도해봐야겠다. 이러고 잊어버리겠지만